sonar-assess-risk
이벤트 로그의 위험 점수를 계산합니다. 탐지 룰과 자산 정보를 기반으로 ETIR 위험 점수를 산출하여 레코드에 추가하며, 보안관제 운영 시 이벤트 심각도 우선순위 판별에 활용합니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 가공 쿼리 |
| 필요 권한 | 없음 |
| 라이선스 사용량 | 해당 없음 |
| 병렬 실행 | 지원 |
| 분산 실행 | 수집 노드에서 실행 (mapper) |
문법
옵션
simple=BOOLt로 지정하면_rule_name,_private_ip,_capec_id,_likelihood_type,_likelihood_target,_exploit_target,_exploit_cve_id필드를 생략합니다 (기본값:f).rule=BOOLt로 지정하면 룰 관련 필드(_rule_ticket_issue_cond,_rule_enabled)를 추가로 출력합니다 (기본값:f).
입력 필드
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
_rule_type | 문자열 | 필수 | 탐지 룰 유형 (STREAM 또는 BATCH) |
_rule | 32비트 정수 | 필수 | 탐지 룰 ID |
signature | 문자열 | 선택 | 탐지된 시그니처 문자열. 탐지 룰에 연계된 시그니처 앱에서 일치하는 시그니처를 조회하여 CAPEC 매핑 정보(_capec_id)를 가져오는 데 사용합니다 |
_site | 문자열 | 선택 | 사이트 이름. 지정하면 해당 사이트에 등록된 자산 정보로 조회 범위를 좁힙니다 |
host_ip | 문자열 | 선택 | 탐지된 호스트 IP 주소. 자산 정보(기밀성·무결성·가용성 등급, CVE 취약점) 조회에 사용합니다 |
src_ip | 문자열 | 선택 | 이벤트 출발지 IP 주소. host_ip와 동일하게 자산 정보 조회에 사용합니다 |
dst_ip | 문자열 | 선택 | 이벤트 목적지 IP 주소. host_ip와 동일하게 자산 정보 조회에 사용합니다 |
출력 필드
이 명령어는 입력 레코드에 필드를 추가하는 가공 쿼리이므로, 아래 표에 없는 입력 필드는 그대로 유지됩니다. 탐지 룰을 찾은 경우 아래 필드가 항상 추가됩니다(단, 시그니처·자산 매칭 정보가 없으면 _risk_score 값이 null일 수 있습니다).
| 필드 | 타입 | 설명 |
|---|---|---|
_rule_type | 문자열 | 입력 필드 유지 (STREAM 또는 BATCH) |
_rule | 32비트 정수 | 입력 필드 유지 (탐지 룰 ID) |
host_ip | 문자열 | 입력 필드 유지 |
src_ip | 문자열 | 입력 필드 유지 |
dst_ip | 문자열 | 입력 필드 유지 |
_signature_guid | 문자열 | 입력 필드 유지 (이 명령어는 값을 채우지 않으며, CAPEC 조회는 signature 필드를 사용합니다) |
_risk_score | 32비트 정수 | 산출된 위험 점수 (0-100 사이의 값. 값이 클수록 위험도가 높음) |
simple=f(기본값)일 때 추가로 출력됩니다. simple=t이면 아래 필드는 생략됩니다.
| 필드 | 타입 | 설명 |
|---|---|---|
_rule_name | 문자열 | 탐지 룰 이름 |
_private_ip | 문자열 | 이벤트에서 식별된 내부 IP 주소 |
_capec_id | 문자열 | 시그니처에 연결된 CAPEC ID |
_likelihood_type | 문자열 | 가능성 계산에 사용된 유형 |
_likelihood_target | 문자열 | 가능성 계산 대상 |
_exploit_target | 문자열 | 취약점이 확인된 자산의 IP 주소 |
_exploit_cve_id | 문자열 | 연관된 CVE ID |
rule=t일 때 추가로 출력됩니다.
| 필드 | 타입 | 설명 |
|---|---|---|
_rule_ticket_issue_cond | 문자열 | 티켓 발행 조건 (NEVER, ETIR_THRESHOLD, ALWAYS) |
_rule_enabled | 불리언 | 탐지 룰 활성화 여부 |
계산 오류 발생 시 출력됩니다.
| 필드 | 타입 | 설명 |
|---|---|---|
_error | 문자열 | 오류 메시지 |
_error_file | 문자열 | 오류가 발생한 소스 파일명 |
_error_line | 32비트 정수 | 오류가 발생한 소스 코드 행 번호 |
오류 코드
파싱 오류
해당 사항 없음
런타임 오류
해당 사항 없음
처리 중 예외가 발생하면 레코드를 버리지 않고
_error,_error_file,_error_line필드에 오류 정보를 기록한 뒤 파이프라인으로 전달합니다.
설명
sonar-assess-risk는 이벤트 레코드에 포함된 _rule_type과 _rule 필드로 해당 탐지 룰 객체를 조회하고, signature·_site·host_ip·src_ip·dst_ip 필드를 참고하여 ETIR 서비스에서 위험 점수를 계산해 레코드에 추가합니다.
_rule_type과 _rule 필드는 이벤트를 발생시킨 원본 로그에만 기록되므로, event 명령어에 raw=t 옵션을 지정해 조회한 결과를 입력으로 사용하세요.
_rule ID에 해당하는 탐지 룰이 존재하지 않으면 해당 레코드에는 아무 필드도 추가하지 않고 그대로 파이프라인으로 전달합니다. 반면 _rule_type이나 _rule 필드가 없거나 값이 올바르지 않아 룰 조회 자체가 실패하면 계산 오류로 처리되어 _error 등 오류 필드도 추가됩니다.
simple=t 옵션을 사용하면 _rule_name, _private_ip, _capec_id, _likelihood_type, _likelihood_target, _exploit_target, _exploit_cve_id 필드를 생략하여 출력이 간결해집니다. 위험 점수만 필요한 필터링 파이프라인에서 유용합니다.
rule=t 옵션을 사용하면 탐지 룰의 티켓 발행 조건(_rule_ticket_issue_cond)과 활성화 상태(_rule_enabled)도 함께 확인할 수 있습니다.
사용 예
-
최근 1시간 이내 이벤트의 위험 점수 계산
event duration=1h raw=t | sonar-assess-risk | fields _rule_type, _rule, _rule_name, src_ip, dst_ip, _risk_score -
simple=t옵션으로 위험 점수만 추가하여 고위험 이벤트 필터링event duration=1d raw=t | sonar-assess-risk simple=t | search _risk_score >= 80 | sort -_risk_score -
탐지 룰 정보를 포함하여 위험 점수 계산
event duration=1h raw=t | sonar-assess-risk rule=t | fields _rule, _rule_name, _rule_enabled, _rule_ticket_issue_cond, _risk_score
변경 이력
sonar-assess-risk 명령어는 소나 4.0.2609.0(5.0 계열은 5.0.2603.0) 버전부터 사용 가능합니다.
4.0 계열 웹 콘솔은 자산에 CVE 취약점을 등록하는 화면을 제공하지 않으므로 _exploit_target, _exploit_cve_id 필드가 항상 비어 있습니다. 또한 탐지 룰의 티켓 발행 조건을 ETIR_THRESHOLD로 지정할 수 없어 _rule_ticket_issue_cond는 ALWAYS 또는 NEVER만 출력됩니다.