[2026-07-06] Detecting Asymmetric Application-layer Denial of Service Attacks In Flight with FINELAME
Motivation & Background
Asymmetric DoS
์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ณ ๋ฆฌ์ฆ์ , ์๋ฏธ๋ก ์ ๋๋ ๊ตฌํ์์ ํน์ฑ์ ํ์ ์ผ๋ก ์ผ์ ์ ์ ์์ ํธ๋ํฝ๊ณผ ๊ณต๊ฒฉ์์ ์์๋ง์ผ๋ก ์์์ ๊ฐ์ฉ์ฑ์ ์นจํดํ๋ ๊ณต๊ฒฉ.
- Type
- Regular-expression DoS (ReDoS) : ์ ๊ทํํ์์ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ์ ํ์ ์ผ๋ก ์ผ์. ์๊ณ ๋ฆฌ์ฆ์ worst case๋ฅผ ์ ๋
- ex) (a+)+ ๊ฐ์ ์ ๊ท์ : a๊ฐ ๋ค์ด๊ฐ ์๋ ์์๊ฐ 1๊ฐ ์ด์ ์๋ ์ง ํ์ธ. aaaaX์ธ ๊ฒฝ์ฐ.
- ์์ 1๊ฐ : aaaa ํ์ธ ํ X๊ฐ ์์์ผ๋ก ๋ค์ ๋์๊ฐ
- ์์ 2๊ฐ : aaa a ํ์ธ ํ X๊ฐ ์์์ ํ์ธ. aa aa ์ดํ X๊ฐ ์์์ ํใฑใฑ์ธ
- ์ด ๊ณผ์ ์ ์์ 4๊ฐ๊น์ง ํด์ ์ฌ๋ฌ ๋ฒ ํจ
- ex) (a+)+ ๊ฐ์ ์ ๊ท์ : a๊ฐ ๋ค์ด๊ฐ ์๋ ์์๊ฐ 1๊ฐ ์ด์ ์๋ ์ง ํ์ธ. aaaaX์ธ ๊ฒฝ์ฐ.
- XML Bomb : XML ๋ฌธ์์ Entity๋ผ๋ ๋จ์ถ์ด ๊ธฐ๋ฅ์ด ์์. ํด๋น ๊ธฐ๋ฅ์ ์
์ฉํ์ฌ ์ง์ฐ ์๊ฐ์ด ์ฆ๊ฐ
- ex) &A; โ ํํํํํํํํํ, &B; โ &A;&A;&A;&A;&A;&A; &C; โ &B;&B;&B;โฆ
- ๊ณต๊ฒฉ์์ ํ ์คํธ๋ ์กฐ๊ธ์ด์ง๋ง ์๋ฒ์์ ํ์ฑ์ ํ ๋ ์ฉ๋์ด ์ปค์ง
- Improper (de-)serialization : ๋์ฝ๋ฉํ๋ ๊ณผ์ ์์ for (;;) {} ๊ฐ์ ๋ฌดํ ๋ฃจํ ์ฝ๋๋ฅผ ์ฃผ์ ํ์ฌ ํ๋ก์ธ์ค๋ฅผ ์ค๋จ
- Event-handler Poisoning (EHP) : ์ฑ๊ธ ์ค๋ ๋ ๊ธฐ๋ฐ Node.js ๊ฐ์ ๊ฒฝ์ฐ์๋ ํ๋์ ์์ฒญ์ด ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ถ์ก๊ณ ์๋ ์๊ฐ์ ๋ค๋ฅธ ์น ์์ฒญ์ด ๋ฉ์ถฐ ๋ฒ๋ฆผ
- Regular-expression DoS (ReDoS) : ์ ๊ทํํ์์ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ์ ํ์ ์ผ๋ก ์ผ์. ์๊ณ ๋ฆฌ์ฆ์ worst case๋ฅผ ์ ๋
- ๋ฐฉ์ด ๋ฐฉ๋ฒ์ ๋ถ์ฌ
- ๋คํธ์ํฌ ๊ธฐ๋ฐ ๋ฐฉ์ด : ๋คํธ์ํฌ ์์ค์์ ์๋ณ ๊ฐ๋ฅํ ๋ฌธ์ ํจํด์ด ๋ถ์กฑ
- DPI ๋ฟ๋ง ์๋๋ผ ์ด๋ค ์์ฒญ์ด ์์์ ๋ ์ ํ๋ ์ง ์ฌ์ ์ ์์ธกํด์ผ ํ์ง๋ง ์คํ ์ ๊น์ง๋ ๋ชจ๋ฆ
- ์ ํ๋ฆฌ์ผ์ด์
์์ค ๋ฐฉ์ด
- ํ๋ ์น ์๋น์ค์ ์ฝ๋๋ ์คํ ์์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฃผ์ด๋ฉฐ ์ธ๋ถ ํจํค์ง๋ค์ ์์ค์ฝ๋๋ฅผ ๋ณผ ์ ์๋ ์ปดํ์ผ๋ ๋ฐ์ด๋๋ฆฌ ํํ์ด๊ธฐ ๋๋ฌธ์ ๋ธ๋ ๋ฐ์ค ํ๊ฒฝ์ ๋ฐฉ์ด ๋ก์ง์ ๋ฃ๊ธฐ ํ๋ฆ
- ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ์ธ์ด๋ก ๋ง๋ค์ด์ง. ๋ชจ๋ ์ธ์ด์ ๋ฐํ์์ ํน์ฑ์ ๋ค ์ดํดํ๊ณ ๋ง๋ ๋ฐฉ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ด๋ ค์
- ์๋์ผ๋ก ์์ฒญ์ ์ถ์ ํ๋ ๊ฐ์ ์ฝ๋๋ฅผ ๋ฃ๋ ๊ฒ์ ๋น์ฉ์ด ๋ง์ด ๋ค๋ฉฐ ์ํํ ์์
Design goal
- ์คํ ์ค ํ์ง : ์์ฒญ์ ์คํํด์ผ ์ ์ฑ์์ ์์์ฐจ๋ฆด ์ ์์ผ๋ฉฐ ํ๋์ ์์ฒญ๋ง์ผ๋ก ์์คํ ์ด ๋ฌด๋์ง๊ธฐ ๋๋ฌธ์ ์ฌํ ๋์ ๋ฐฉ์ ์ญ์ ๋ถ๊ฐ๋ฅ
- ์์ ๋ ๋ฆฝ์ฑ : ADoS๋ ์ฌ๋ฌ ์์์ ํ๊ฒ์ผ๋ก ํด์ Solution์ ์์ ์ข ๋ฅ์ ์ข ์๋๋ฉด ์๋จ.
- ์ปดํฌ๋ํธ ๊ฐ ์ถ์ : ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ๋ด๋ถ ์ปดํฌ๋ํธ๋ ์ฒ๋ฆฌ ๋จ๊ณ๋ฅผ ๊ฑด๋. ๊ณต๊ฒฉ์๋ ์ด ์ปดํฌ๋ํธ ์ฌ์ด์ ๊ฒฝ๊ณ๋ฅผ ๋๋๋ค๋ฉฐ ์์์ ๊ฐ์๋จน๊ธฐ ๋๋ฌธ์, ์ด๋ค ์ปดํฌ๋ํธ์์ ์์์ด ์๋ชจ๋๋ ์๊ด์์ด ์ต์ด์ ์น ์์ฒญ ID ํ๋๋ก ๋๊น์ง ์ถ์ ํด์ ์์ ์ฌ์ฉ๋์ ์ผ์ํ
- ์ธ์ด ๋ ๋ฆฝ์ฑ : ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ด ์ฌ๋ฌ ์ธ์ด๋ก ์์ฑ๋๋ฉฐ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ข ์๋๋ฉด ์๋จ.
- ๊ฐ๋ฐ์ ๋ ธ๋ ฅ์ ์ต์ํ : ํ์ง ์์คํ ์ DevOps ํ๊ฒฝ์ ์ต์ํ์ ๋ถ๋ด์ ์ค์ผ ํ๋ฉฐ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์ ๋ชฐ๋ผ๋ ๋จ.
Threat Model
Threat Model
- ๊ณต๊ฒฉ์๋ ์ทจ์ฝํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํธ์คํ ํ๋ ์๋น์ค์ ์์์ ์์ฒญ์ ๋ณด๋ผ ์ ์์
- ๊ณต๊ฒฉ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ ๋ชจ๋ ์ผ๋ฐ ํด๋ผ์ด์ธํธ๋ฅผ ์ ์ด
- ๊ณต๊ฒฉ์๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ด๋ถ ๊ตฌ์กฐ์ ์ทจ์ฝ์ ์ ์๊ณ ์์
- CPU ์์๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ์์์ ๋์์ผ๋ก ๊ณต๊ฒฉ
- ์ผ๋ฐ ํด๋ผ์ด์ธํธ์ ์ ์ฑ ํด๋ผ์ด์ธํธ๋ฅผ ๊ตฌ๋ถํ์ง ์์
Assumptions
- ๋ฐฑ๋์ด ๊ฐ์ ์ ์ฑ ์ฝ๋๊ฐ ์๋
- ์ต์ํ ์ด๋ ์ ๋์ ์ ์์ ์ธ ํธ๋ํฝ(benign traffic)์ด ๋ค์ด์์ผ ํจ
- 100% ์ ์ฑ ํธ๋ํฝ๋ง ๋ค์ด์ค๋ ๊ฒฝ์ฐ ML์ด ์๋ชป ํ์ต
- ๋จ์ผ ์์ฒญ์ด ์ฌ์ฉํ๋ ์๋น๋ ์์์ ์ ์ ์์
FINELAME

Request Mapping
๊ฐ ์ปดํฌ๋ํธ์ ์ฒ๋ฆฌ ๋จ๊ณ์ ๋ํด ์ฒ๋ฆฌ์ ์์๊ณผ ๋, ๊ทธ๋ฆฌ๊ณ ์์ ์ฌ์ฉ๋์ด ๊ท์๋์ด์ผ ํ ๋์ ์์ฒญ์ ๊ตฌ๋ถ
- startProcessing() : ์ฒ๋ฆฌ ๋จ๊ณ์ ์์์ ๋ํ๋. ์ด ์ง์ ์ดํ์ ๋ฐ์ํ๋ ์์ ์ฌ์ฉ์ด๋ ํ ๋น๋ ์๋กญ๊ฒ ๋ค์ด์จ ๊ณ ์ ํ ์์ฒญ์ ๋ชซ์ผ๋ก ํ ๋น
- attributeRequest(reqId) : PID๋ฅผ ๊ฒฐ์ ํ ์ ์๊ฒ ๋๋ฉด ์ฒ๋ฆฌ ๋จ๊ณ๋ฅผ ์์ฒญ ID์ ๋งคํ
- endProcessing() : ์ฒ๋ฆฌ๊ฐ ์๋ฃ.
- EX) ๋คํธ์ํฌ ํจํท ๊ณผ์
- NIC์ ํจํท์ด ๋ค์ด์ค๋ฉด Queue์์ ํจํท์ ๊บผ๋ผ ๋ startProcessing์ ์คํํ๋ฉฐ ์์์ ๊ธฐ๋ก
- ์ฒ์์๋ ํจํท์ด ์ด๋ค ์น ์์ฒญ์ธ์ง ๋ชจ๋ฅด์ง๋ง TCP ๊ณ์ธต์ด ๋์ด์์ผ 5-tuple์ ํ์ธํ์ฌ ID๋ฅผ ๊ธฐ๋ก. ์ด ์๊ฐ attributeRequest(reqID)๋ฅผ ํธ์ถํ์ฌ startProcessing์์๋ถํฐ ์ธก์ ํ ์์์ ํด๋น ID์ ํ ๋นํ๋ฉฐ ์ดํ ๊ณผ์ ๋ ํด๋น ID๋ก ํ ๋น
- ๋ฐฐ๊ฒฝ ์์
(ex. ๊ฐ๋น์ง ์ปฌ๋ ์
) ๊ฐ์ ๊ณต์ ์ค๋ฒํค๋๋ ๋ถํ ํ๊ฑฐ๋ ํ๋ฅ ์ ์ผ๋ก ํ ๋น
- ์์ํ๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ํ ์ค๋ฒํค๋๋ ํ ๋นํ์ง ์์ ์ ์์
- OS์ thread/process์ ์๋ณ์(ID)์ ๋๊ธฐํ : ์ด๋ค thread๊ฐ ์ด๋ค ID๋ฅผ ์ฒ๋ฆฌํ๋ ์ง ๋งคํ
- ์๋ณ์๋ ๋คํธ์ํฌ ๋จ์์๋ 5-tuple, ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ผ ์ ์์.
- ํ์ ์๋ณ์๊ฐ ํตํฉ๋จ.
- ์ต์ ํ : ID ๋ฐ๊ธ๊ณผ OS ์ค๋ ๋ ๊ฐ ๋งคํ์ด ํ ๋ฒ์ ํด๊ฒฐ
- ์ด๋ฒคํธ ๊ธฐ๋ฐ์ ํ๋ ์์ํฌ๋ ์ค๋ ๋ ํ ๊ธฐ๋ฐ์ ์์ฒญ์ entry point๊ฐ ํ๋๊ฑฐ๋ ์ ์
- ํด๋น ์ง์ ์ ์ request-mapper๋ฅผ ์์ฝ๊ฒ ๋ถ์ฐฉ
- ์ด๋ฒคํธ ๊ธฐ๋ฐ์ ํ๋ ์์ํฌ๋ ์ค๋ ๋ ํ ๊ธฐ๋ฐ์ ์์ฒญ์ entry point๊ฐ ํ๋๊ฑฐ๋ ์ ์
Resource Monitoring
context switches, mallocs, page faults ๊ฐ์ ์์ ๋จ์์์ ์คํ์ค์ธ ์์ฒญ์ ์์ ์ฌ์ฉ๋์ ์ถ์
eBPF
- BPF : ๋ฆฌ๋
์ค ์ปค๋ ๋คํธ์ํน ํ์ ์์คํ
์ ๊ตฌ์ฑ ์์. ์ปค๋ ์ด๋ฒคํธ์์ ์์ฑ๋ ๋ฐ์ดํฐ๋ฅผ ํํฐ๋งํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋จ์ํ ์ธ์ด๋ฅผ ํด์ํ๋ ๊ฐ์ ๋จธ์ (Virtual Machine)
- JIT(Just-In-Time) ์ปดํ์ผ๋ฌ ๊ฐ๋ฐ๋ก ์คํ ์ค์ ์ต์ ํ
- eBPF : BPF + ๋ ๋ง์ ๋ ์ง์คํฐ์ ๋ค์ดํฐ๋ธ RISC ISA(๋ช
๋ น์ด ์งํฉ ์ํคํ
์ฒ)๋ฅผ ๋ชจ๋ฐฉํ ๋ช
๋ น์ด ์งํฉ์ ์ฌ์ฉ + ์ ํ๋ ์ปค๋ ํจ์์ ์ผ๋ถ๋ฅผ ํธ์ถ + ํด์ ํํ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํตํด kernel-space์์ user-space์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ณต์
- ์ฌ์ฉ์๊ฐ C์ธ์ด๋ฅผ ํตํด ์์ฑํ ํ๋ก๊ทธ๋จ์ ์ปดํ์ผ๋ฌ๋ฅผ ํตํด low-level์ eBPF ์ฝ๋ ์์ฑ
- ๊ฒ์ฆ๊ธฐ์์ ๋ถ๋ ์์์ ๊ธ์ง, ๋ช ๋ น์ด ์ ์ ํ, ๋ฌดํ ๋ฃจํ ๊ธ์ง ๋ฑ์ ์ ์ฝ์ด ์์
Architecture
๋ค์ํ ์ฌ์ฉ์ ๋ฐ ์ปค๋ ๊ณต๊ฐ์ ๋ฐ์ดํฐ ์์ค (์ค์ผ์ฅด๋ฌ, TCP ์คํ) ๋ฑ์ attach
-
Feature

- ๋์ ํ๋ฆ
- ํ์ฌ PID์ ์์ฒญ mapping ํ์ฑํ ํ์ธ. ์๋ ๊ฒฝ์ฐ exit
- ํ์ฑํ๋ PID์ธ ๊ฒฝ์ฐ metrics๋ฅผ ์์งํ๊ณ timestamp์ ํจ๊ป ๊ณต์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์ ์ฅ
- ์์ ์ฌ์ฉ๋์ ๋ฐํ์ผ๋ก ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ์ ๋น๊ตํ์ฌ ์์ฒญ์ ๋ํด ์ด์ ํ์ง ์ํ
- ์ปค๋ ํจ์
- CPU ์์ : ์ ์ ์๊ฐ (cputime)์ ์ธก์
scheduler_tick(): ํ์ด๋จธ ์ธํฐ๋ฝํธfinish_task_switch(): ์ปจํ ์คํธ ์ค์์น- ์ค๋ ๋๊ฐ ์ค์ผ์ฅด๋ง๋์ด ์์ํ ๋๋ถํฐ ์ค์ ์์(CPU์์ ๋ด๋ ค์ด)
- TCP ์์
- ์ก์ ๋ฐ์ดํธ(tcp_sent), ์์ ๋ฐ์ดํธ (tcp_rcvd) ์ถ์
tcp_sendmsg(),tcp_rcleanbuf()
- TCP ์ก์ ์ ์ ํด ์๊ฐ (tcp_idle_time)
- ๋ ๋ฒ์
tcp_cleanup_rbuf()์ฌ์ด์ ๊ฒฝ๊ณผ ์๊ฐ - ๋ฐ์ดํฐ๋ฅผ ์ง์ฐ ์ ์กํ๋ Slowloris๋ RUDY์ ๊ฐ์ ์ ์ ๊ณต๊ฒฉ ํ์ง์ ํ์์
- ๋ ๋ฒ์
- ๋ฉ๋ชจ๋ฆฌ ์์
- ํ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๋
malloc
- ํ์ด์ง ํดํธ ๋ฐ์ ํ์
exception:page_fault_user: ์ปค๋ ํธ๋ ์ด์ค ํฌ์ธํธ
- ํ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๋
- ์ก์ ๋ฐ์ดํธ(tcp_sent), ์์ ๋ฐ์ดํธ (tcp_rcvd) ์ถ์
- CPU ์์ : ์ ์ ์๊ฐ (cputime)์ ์ธก์
- ์ด์ธ์๋ ์ฌ์ฉ์ ์ ์ eBPF ํ๋ก๊ทธ๋จ์ ํตํด ์ฌ์ฉ์ ๊ณต๊ฐ์ ์์์ ์ง์ (probe points)๋ฅผ ๋ถ์ฐฉํ ์ ์์
- ํ ๊ธธ์ด๋ ํด์ ํ ์ด๋ธ ์ ์ ์จ๊ณผ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ํนํ ์งํ๋ฅผ ์ถ๊ฐ๋ก ๋ชจ๋ํฐ๋งํ์ฌ ํ์ง ๋ฒ์ ํ์ฅ
Attack Detection in FINELAME
- ์์งํ ๊ฐ feature์ ๋ํ n ์ฐจ์ ๊ณต๊ฐ์์ ์ ์ฒด์ ์ธ ์ขํ์ ์์น๋ฅผ ์ข ํฉ์ ์ผ๋ก ํ๊ฐ. ์ฌ๋ฌ feature๋ฅผ ์์ด๋ mutil-vector ๊ณต๊ฒฉ์ ์๋ณ
- ์๊ณ ๋ฆฌ์ฆ
- ์ ์
- ํ์ต ๋ณต์ก๋, ์์ธก ๋ณต์ก๋, ํ์ต ๋ฐ์ดํฐ์ ์ ๋๋ฌธ์ ์๊ณ ๋ฆฌ์ฆ์ด ์ ํ์
- ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ : ์ ์ Cluster๋ฅผ ํ์ฑํ์ฌ ์๋ก์ด ๋ฐ์ดํฐ์์ ๊ฑฐ๋ฆฌ ์ธก์ ์ ํตํด ์ด์ ํ์ง
- DBSCAN ๊ฐ์ ๊ฒฝ์ฐ ๋ชจ๋ core์ ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ ํ๊ธฐ ๋๋ฌธ์ ํ์ต ๋ณต์ก๋ ์ฆ๊ฐ๋ก ํ๋ฆ
- ์์ธก ๊ธฐ๋ฐ : function์ ๋ง๋ค์ด์ ์ค์ฐจ๊ฐ ํฐ ๊ฐ์ ํตํด ์ด์ ํ์ง
- ์ ๊ฒฝ๋ง ๊ฐ์ ๊ฒฝ์ฐ ๋ง์ ํ๋ผ๋ฏธํฐ์ ํ๋ ฌ ๊ณฑ์ ์ ๋ฌดํํ ๋ฐ๋ณตํด์ผ ํ๋ ๋ฐ eBPF ๋ด์์ ๋ฌดํ ๋ฃจํ๊ฐ ๋ถ๊ฐ๋ฅ. eBPF์ ๋ช ๋ น์ด ์ ํ์ ๊ฑธ๋ฆผ
- K-Means ์ฌ์ฉ : user-space์์ ํ์ต๋ K-means์ centroid๋ฅผ ํตํด ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ ํ์ฌ ์ด์ ํ์ง
- K ๊ฐ ์ค์ : ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฒ๋ฆฌํ๋ ์์ฒญ ์ ํ์ ๊ฐ์๋ฅผ ์ค์ ํ์ ๋, ํ์ง ์ ํ๋๋ฅผ ์ ์งํ๋ฉด์ ์ค๋ฒํค๋๋ฅผ ์ต์ํ
- ํ์ต ๊ณผ์
- ์ ์ ๋ฐ์ดํฐ ์์ง : ํ์ง๋ฅผ ๋ณด๋ฅํ๊ณ eBPF ๊ณต์ ๋งต์ ์ถ์
- ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ : ๋ชจ๋ ์์ ์งํ ๋จ์ ์ฐจ์ด๋ฅผ ์์ ๊ธฐ ์ํด ํ๊ท 0, ํ์ค ํธ์ฐจ 1๋ก ๋ง์ถ๋ ํ์คํ ์์ ์ํ
- ํ์ต ํ eBPF๋ก ๋ชจ๋ธ ๋ฐฐํฌ
- ํ๋ผ๋ฏธํฐ : Centroid, ํ๊ท ๋ฐ ํ์คํธ์ฐจ(๋ฐ์ดํฐ๋ค์ ํ์คํ ํ๊ธฐ ์ํ ๊ฐ), ์๊ณ๊ฐ
- ์ ์
- ๋ชจ๋ธ ํ์ต ๋ฐ ๋ฐฐํฌ
- eBPF์์๋ ๋ถ๋ ์์์ ๋ช
๋ น์ด์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ์ฌ ํ๊ท ๊ณผ ํ์ค ํธ์ฐจ ๋ฑ์์ ๋ฌธ์ ๊ฐ ๋ฐ์.
- ๊ณ ์ ์์์ ์ฐ์ฐ ๋ฐ ๋นํธ ์ํํธ. $10^a$๋ฅผ ๊ณฑํด ์ ์๋ก ๋ง๋ฆ
- ํ์คํ ๊ณต์ :
- ๋ฐ๋ณต๋ฌธ ๋ฐ ๋ฃจํธ ์ฐ์ฐ์ด ๊ธ์ง๋์ด ์ ํด๋ฆฌ๋์ ๊ฑฐ๋ฆฌ ๋์ ์ ๋๊ฐ์ ๋ํ๋ L1 ๊ฑฐ๋ฆฌ ์ ์๋ฅผ ์ฌ์ฉ
- ๋จ์ DDoS ๊ณต๊ฒฉ์ ์์์ ๊ทน๋จ์ ์ผ๋ก ์ ๊ฒ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด์์น๋ก ํ์ง๋ ์ ์์. ๊ฑฐ๋ฆฌ ์ ์์ ์์ ์ ์๋ฅผ ์ถ๊ฐํด DDoS์ ๋ํด์ ADoS ์์ฒญ๋ง ์์๋ฅผ ๊ฐ๊ณ flag๋ฅผ ๊ฝ์ ์ฐจ๋จํจ
- DDoS๋ ์ ์ธํ๊ณ ADoS๋ง ํ๊ฒํ
- eBPF์์๋ ๋ถ๋ ์์์ ๋ช
๋ น์ด์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ์ฌ ํ๊ท ๊ณผ ํ์ค ํธ์ฐจ ๋ฑ์์ ๋ฌธ์ ๊ฐ ๋ฐ์.
Use Case
- Apache ์น ์๋ฒ : ๋ค์ค ์ฒ๋ฆฌ ๋ชจ๋(MPM, Multi-Processing Modules)์ ์ํด ๊ตฌํ. ์ฌ๋ฌ ์์
์ ์ค๋ ๋(worker threads)๋ฅผ ๊ฐ์ง ์ ์๋ ์ฌ๋ฌ ํ๋ก์ธ์ค์ ์ํด ์ฒ๋ฆฌ๋๋ฉฐ, ๊ฐ ์ค๋ ๋๋ ํ ๋ฒ์ ํ๋์ ์ฐ๊ฒฐ(connection)์ ์ฒ๋ฆฌ
- ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์์
์ ์ค๋ ๋์ ๋ฐฐ์ (dispatch)๋๊ธฐ ์ ์ ์ด๋ฅผ ๋ด์๋
conn๊ฐ์ฒด๊ฐcore_create_connํจ์์ ์ํด ์์ฑcore_create_conn์ 1๊ฐ์ ์์ฒญ-๋งตํผ๋ฅผ ๋ถ์ฐฉ. ๊ณ ์ ์๋ณ์๋ฅผ ์์ฑ- HTTP ์ฒ๋ฆฌ ํจ์๋ค์ 2๊ฐ์ ์์ฒญ-๋งตํผ๋ฅผ ๋ถ์ฐฉ
- ํจ์ ์ง์
์ ํธ์ถ๋๋
uprobe - ํจ์ ๋ฐํ ์ ํธ์ถ๋๋
uretprobe
- ํจ์ ์ง์
์ ํธ์ถ๋๋
conn๊ฐ์ฒด๋ฅผ ํ์ฉํ์ฌ ๊ณ ์ ์๋ณ์(ID)๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ์์ ์ ์ค๋ ๋์ ๋งตํ- ์ด ๋งตํ์ ํจ์๊ฐ ๋ฐํ(return)๋๊ณ ์์ฒญ์ด ์์คํ ์ ๋น ์ ธ๋๊ฐ ๋ ํด์ (undone)
- ์์ ์ ์ค๋ ๋๊ฐ ์๋ก์ด ์์ฒญ์ ์คํํ ๋, ์์ฒญ-๋งตํผ๋ ์๋ก์ด ์์ฒญ์ ID๋ก ๋งตํ์ ์ ๋ฐ์ดํธ
conn๊ฐ์ฒด๋ap_process_http_sync_connection๋๋p_process_http_async_connectionํจ์์ ์ํด ์ฒ๋ฆฌ
- ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์์
์ ์ค๋ ๋์ ๋ฐฐ์ (dispatch)๋๊ธฐ ์ ์ ์ด๋ฅผ ๋ด์๋
- Node.js : ์์
ํ์ ์์
์ ๋ ๋๊ธฐ๋ ๋น๋๊ธฐ์ ๋ชจ๋ธ. ๊ณ์ธก์ด ์ด๋ ค์. 7๊ฐ ์ฌ์ฉ์ ๊ณต๊ฐ ํจ์์ eBPF ํ๋ก๋ธ๋ฅผ ๋ถ์ฐฉ
uv_accept: ์๋ก์ด ์์ฒญ์ด ์ด๊ธฐํ๋๋ฉฐ, ํด๋ผ์ด์ธํธ์์ ํต์ ์ ์ฒ๋ฆฌํ๋uv_stream_t๊ตฌ์กฐ์ฒด์ ์ฐ๊ฒฐ๋ฉ๋๋ค.uv__read๋ฐuv__write: ํด๋ผ์ด์ธํธ์ ์คํธ๋ฆผ๊ณผ ์ฐ๊ฒฐ๋ ์์ฒญ์ด ํด๋น ํจ์๊ฐ ์คํ๋๋ ๋์ โํ์ฌ ์ค๋ ๋โ์ ํ ๋น๋ฉ๋๋ค.uv__work_submit: โํ์ฌ ์ค๋ ๋โ์ ํ ๋น๋ ์์ฒญ์ด ์์ ํ(worker pool)์ ์ ์ถ๋๋ ์์ ์์ฒญ(work-request)๊ณผ ์ฐ๊ฒฐ๋ฉ๋๋ค.uv__fs_work๋ฐuv__fs_done: ์์ ์์ฒญ๊ณผ ์ฐ๊ฒฐ๋ ์์ฒญ์ด ํ์ฌ (์์ ์) ์ค๋ ๋์ ํ ๋น๋ฉ๋๋ค.uv_async_send: ์์ฒญ์ด ํ์ฌ ์ค๋ ๋์์ ํ ๋น ํด์ (unassigned)๋ฉ๋๋ค.
- DeDoS : ์ฌ๋ฌ ๊ฐ์ ๋
๋ฆฝ์ ์ธ ์ํํธ์จ์ด ์ปดํฌ๋ํธ๋ค์ด ์ด๋ฒคํธ ํ(Queue)๋ฅผ ํตํด ํต์ ํ๋ ๋ถ์ฐํ ๊ตฌ์กฐ
- ํ๋ ์์ํฌ๊ฐ ์์ฒด์ ์ผ๋ก ์ ๊ณตํ๋ โ๋ถ์ฐ ์์ฒญ ์ถ์ IDโ๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ธ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ค๋ ๋์ PID์ ์ง์ ๋งตํ
- ๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ ๋จ์ผ ์ด๋ฒคํธ ์์ ํจ์์ธ
receive()ํด๋์ค์ ํ๋ก๋ธ๋ฅผ ๋ถ์ฐฉ
Evaluation
Setup
- ํ๋์จ์ด ๋ฐ ์์คํ
์ธํ๋ผ
- ์๋ฒ ๋จธ์ : Intel Xeon Silver 4114 (12 Cores, 2.20GHz), 62GB RAM
- ํด๋ผ์ด์ธํธ ๋จธ์ : Intel Xeon E5-2630L v3 (1.80GHz), 62GB RAM
- ํต์ ์กฐ๊ฑด: ํ๋์จ์ด ๋ ๋ฒจ์ ์ฑ๋ฅ ์๊ณก์ ๋ง๊ธฐ ์ํด ํ์ดํผ์ค๋ ๋ฉ(Hyperthreading) ๋ฐ DVFS(๋์ ์ ์ ๋ฐ ์ฃผํ์ ์ค์ผ์ผ๋ง)๋ฅผ ๋ชจ๋ ๋นํ์ฑํ ์ฒ๋ฆฌํจ
- ํ์ดํผ์ค๋ ๋ฉ : ๋ฌผ๋ฆฌ์ CPU 1๊ฐ๋ฅผ ๋ ๊ฐ์ ๋ ผ๋ฆฌ์ ์ธ ์ฝ์ด 2๊ฐ์ธ ๊ฒ์ฒ๋ผ ์๋. CPU ์ฌ์ฉ๋ ์ธก์ ์ด ํ๋ค์ด์ง
- DVFS : ์ ๋ถํ์์๋ ์ ๋ ฅ ์๋ชจ๋ฅผ ์ค์ด๊ณ ๊ณ ๋ถํ ์์ ์์๋ ์๋๋ฅผ ์ฌ๋ฆฌ๋ ์ ๋ ฅ ๊ด๋ฆฌ ๊ธฐ์
- ์น ํ๋ซํผ ๋ฐ ์ทจ์ฝ์ ์ธํ
- Apache (v2.4.38)
- ๊ตฌ์กฐ: ๋ฉํฐ ํ๋ก์ธ์ฑ ๋ชจ๋(MPM) ๊ธฐ๋ฐ, 50๊ฐ์ Worker threadsํ ๋น.
- ์ฝํ ์ธ ๋ฐ ์ ์ฝ: ์ํคํผ๋์ ํ์ด์ง ์๋น์ค ์ ๊ณต, ๋ชจ๋ ์ฐ๊ฒฐ์ 20์ด์ ํ์์์ ๊ฐ์ .
- Node.js (v12.0.0-pre)
- ๊ตฌ์กฐ: ๋น๋๊ธฐ ์ด๋ฒคํธ ๋ฃจํ ๊ธฐ๋ฐ, libuv ์์
ํ์ ๊ธฐ๋ณธ๊ฐ์ธ 4๊ฐ Worker threads ํ ๋น.
- ๋ฉ์ธ ๋ก์ง์ ์ฑ๊ธ ์ค๋ ๋์ด์ง๋ง ๋ฌด๊ฑฐ์ด I/O ์์ ์ libuv ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด worker thread๊ฐ ์์
- ์ทจ์ฝ์ ์ธํ
: ํ์ผ ๊ฒฝ๋ก ํ์์ ์ํด URI ์ ๊ทํํ์์ ํ์ฑํ๋ ๊ณผ์ ์์ ReDoS(์ ๊ทํํ์ DoS, CPU ๋ง๋น) ๊ณต๊ฒฉ์ ์ทจ์ฝํ
liburiํ์๋ฅผ ์ฐ๋ํจ.- liburi : URL์ด ๋ง๋ ์ง ๋ถ์(Parse) ํด์ฃผ๋ ๋ชจ๋
- ๊ตฌ์กฐ: ๋น๋๊ธฐ ์ด๋ฒคํธ ๋ฃจํ ๊ธฐ๋ฐ, libuv ์์
ํ์ ๊ธฐ๋ณธ๊ฐ์ธ 4๊ฐ Worker threads ํ ๋น.
- DeDoS (์ด๋ฒคํธ ๊ธฐ๋ฐ ๋ง์ดํฌ๋ก์๋น์ค ํ๋ ์์ํฌ)
- ๊ตฌ์กฐ: ์์ผ ์ฝ๊ธฐ, HTTP ํ์ฑ, ํ์ผ ์๋น์ค, XML ํ์ฑ, ์ ๊ทํํ์ ํ์ฑ, ์๋ต ์ฐ๊ธฐ ๋ฑ ์ฌ๋ฌ ์ปดํฌ๋ํธ๋ก ๋ถ์ฐ ๊ตฌํ.
- ์ทจ์ฝ์ ์ธํ
: POST ์์ฒญ์ผ๋ก ์
๋ก๋๋ ๋ฌด์์ XML ํ์ผ์ ์ฒ๋ฆฌํ๋ ์ปดํฌ๋ํธ์ Billion Laughs(XML ๋ถ, ๋ฉ๋ชจ๋ฆฌ ํญํ) ๊ณต๊ฒฉ์ ์ทจ์ฝํ
libxml2ํ์๋ฅผ ์ฐ๋ํจ.- libxml2 : XML ๋ฌธ์ ํ์
- Apache (v2.4.38)
- ํธ๋ํฝ ์์ฑ ๋ชจ๋ธ
- ์ ์ ํธ๋ํฝ: ๋ถํ ํ
์คํธ ๋๊ตฌ์ธ Tsung์ ํ์ฉํ์ฌ ์๋ฒ๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ ์๋ํฌ์ธํธ๋ฅผ ๊ท ๋ฑํ๊ฒ ํ์.
- ์ค์ ์ฌ์ฉ์ ์ ์ ํจํด๊ณผ ๊ฐ์ฅ ์ ์ฌํ ์ง์ ๋ถํฌ๋ฅผ ๋ฐ๋ฅด๋๋ก ์ ๋์ ์ธ ๋ถํ ์์ฑ.
- ์ ์ ํธ๋ํฝ์ ๋ชฐ๋ฆด ๋๊ฐ ์๊ณ ํธ๋ํฝ์ด ๊ฑฐ์ ์์ ๋๋ ์์. ์ด๋ฐ ํจํด๊ณผ ์ ์ฌํ ํต๊ณ ๋ชจ๋ธ์ด ์ง์ ๋ถํฌ
- ์ค์ ์ฌ์ฉ์ ์ ์ ํจํด๊ณผ ๊ฐ์ฅ ์ ์ฌํ ์ง์ ๋ถํฌ๋ฅผ ๋ฐ๋ฅด๋๋ก ์ ๋์ ์ธ ๋ถํ ์์ฑ.
- ์
์ฑ ํธ๋ํฝ
- ReDoS ๋ฐ Billion Laughs ๊ณต๊ฒฉ: ์ฐ๊ตฌ์ง์ด ์์ฒด ์ ์ํ C ์ธ์ด ๊ธฐ๋ฐ ๊ณต๊ฒฉ ํด๋ผ์ด์ธํธ ์ฌ์ฉ.
- Slowloris ๊ณต๊ฒฉ: ๊ณต๊ฐ๋ ๊ณต๊ฒฉ ๋๊ตฌ์ธ pylorys ์ฌ์ฉ.
- ์ ์ ํธ๋ํฝ๊ณผ ๋ฌ๋ฆฌ ๊ณต๊ฒฉ ํจ๊ณผ๋ฅผ ๊ทน๋ํํ๊ธฐ ์ํด ์ผ์ ํ ๊ฐ๊ฒฉ์ ๊ณ ์ ๋ ๋ถํ(Fixed load)๋ฅผ ์ง์ํด์ ์ ์กํ๋๋ก ์ค์ .
- ์ ์ ํธ๋ํฝ: ๋ถํ ํ
์คํธ ๋๊ตฌ์ธ Tsung์ ํ์ฉํ์ฌ ์๋ฒ๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ ์๋ํฌ์ธํธ๋ฅผ ๊ท ๋ฑํ๊ฒ ํ์.
FineLame Performance
attack
์๋ฒ ๋ค์ด๋ณด๋ค๋ QoS ์ ํ ์์ค์ผ๋ก ์งํ
- ์ข
๋ฅ
- ReDoS (์ ๊ทํํ์ DoS)
- ์๋ฆฌ: ์ ์์ ์ผ๋ก ์กฐ์๋ ์ ๊ทํํ์์ ์ ์ก. ์ ์ฑ ๋ฌธ์์ ์์ ๋ฐ๋ผ CPU ์ฒ๋ฆฌ ๋ถํ๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐ.
- ์ํฅ: CPU ์์ ์ ์ ์ผ๋ก ์ธํด ์ ์ ์์ฒญ๋ค์ด Queue์ ์ค๋ ๋จธ๋ฌผ๊ฒ ๋์ด ์๋ต ์๋๊ฐ ํ์ ํ ๋๋ ค์ง.
- Billion Laughs (XML Bomb)
- ์๋ฆฌ: ์ฌ๋ฌ ๋จ๊ณ๋ก ์ค์ฒฉ๋ ์ํฐํฐ๋ฅผ ํฌํจํ XML ํ์ผ ์ ์ก. ๋ฌธ์ ๊น์ด์ ๋น๋กํ์ฌ Parsing. ๋น์ฉ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐ.
- ์ํฅ: ReDoS์ ์ ์ฌํ๊ฒ ์์คํ ์์์ ๊ณ ๊ฐ์ํด.
- SlowLoris
- ์๋ฆฌ: ์๋ฒ์ ํ์์์๋ณด๋ค ์งง์ ์ฃผ๊ธฐ๋ก HTTP ํค๋๋ฅผ ๊ฐ๋ณ ์ ์กํ์ฌ ์์ฒญ์ ์๋ฃํ์ง ์๊ณ ์ฐ๊ฒฐ์ ์ฅ์๊ฐ ์ ์ง.
- ์ํฅ: ์๋ฒ์ Connection pool์ ๊ณ ๊ฐ์์ผ ์๋ก์ด ์ ์ ์์ฒญ์ ๋ฐ์ ์ ์๊ฒ ๋ง๋ฆ. ์ ์ ํธ๋ํฝ ๊ธ์ฆ ์ ์๋ฒ ๋์๋ ฅ์ ๋ฌด๋ ฅํํ๋ ํด๋ฉด ๊ณต๊ฒฉ(Dormant attack)์ผ๋ก๋ ์์ฉํจ.
- ReDoS (์ ๊ทํํ์ DoS)
Anomaly Detection Performance
- ์๊ณ๊ฐ์ ์ค์ : ํ๋ จ ๋ฐ์ดํฐ์ ๋ด ๊ฐ Cluster์ ์ต์ธ๊ณฝ ์ (๊ฐ์ฅ ์์์ ๋ง์ด ์๋นํ ์ ์ ์์ฒญ)์ผ๋ก ์ค์
- ํธ๋ ์ด๋์คํ
- ์ฅ์ : ์๊ณ๊ฐ์ ๋๊ฒ(๋ณด์์ ์ผ๋ก) ์ก์์ผ๋ก์จ ์ด์์๊ฐ ๊ธฐํผํ๋ ์คํ๋ฅ ์ ๋ฎ์ถ ์ ์์.
- ๋จ์ : ๊ณต๊ฒฉ ๊ฐ๋๊ฐ ์ฝํ ๊ฒฝ์ฐ ํ์ง๊ฐ ๋ฆ์ด์ง๊ฑฐ๋ ์ ๋ ์ ์์.
- ํ๋น์ฑ: ์ฝํ ๊ณต๊ฒฉ๋ง์ผ๋ก๋ ์์คํ ์ ๋ง๋น์ํฌ ์ ์์ผ๋ฉฐ, ๊ณต๊ฒฉ์๊ฐ ์๋ฒ๋ฅผ ๋ค์ด์ํค๋ ค๋ฉด ๊ณต๊ฒฉ ๋ฐฉ์์ Volumetric์ผ๋ก ์ ํํ์ฌ ์์ ์๋น๋์ ๋๋ ค์ผ ํ๋ฏ๋ก ํ์ง๊ฐ ๊ฐ๋ฅํจ.
- ํ๊ฐ ์งํ (Metrics):
- TPR(์ค์ ๊ณต๊ฒฉ ํ์ง์จ), TNR(์ ์ ์์ฒญ ํ๋ณ์จ), F1-Score(์ ๋ฐ๋์ ์ฌํ์จ์ ์กฐํํ๊ท )๋ฅผ ์ข ํฉ์ ์ผ๋ก ํ์ฉํ์ฌ ํ๊ฐ.
- ์คํ
- ํ์๋ผ์ธ
0 ~ 180์ด: ์ ์ ํธ๋ํฝ๋ง ์ ์ . FINELAME์ด ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ฉฐ ํ์ต ์ค๋น.180 ~ 200์ด: K-means ์ด์ ํ์ง ๋ชจ๋ธ ํ๋ จ ์๋ฃ ๋ฐ ์ปค๋(eBPF)์ ํ๋ผ๋ฏธํฐ ๋ฐฐํฌ.200 ~ 350์ด: ํด์ปค์ ๊ณต๊ฒฉ(ADoS) ์์ (150์ด๊ฐ ์ง์).350 ~ 400์ด: ๊ณต๊ฒฉ ์ข ๋ฃ, ๋ค์ ์ ์ ํธ๋ํฝ๋ง ์ ์ .
- ์ ์ ๋ฐฉ์์ธ ์ปค๋ ๋ด ์ ์ ์ฐ์ฐ + L1 ๊ฑฐ๋ฆฌ์์ ๋น๊ต๋ฅผ ์ํด user-space์์ ์ค์ ์ฐ์ฐ + L2 ๊ฑฐ๋ฆฌ
- ์ค์ ๊ฐ : $K=3$ (์์ฒญ ์ ํ), ์ํํธ ๊ณ์ $a=10, b=6$
- ํ์๋ผ์ธ
-
๊ฒฐ๊ณผ

- ReDoS
- ํ๊ฒ : Node.js / CPU ๊ณ ๊ฐ
- ๊ณต๊ฒฉ ๊ฐ๋๋ณ ์ง์ฐ ํ์
- ์ ์ ์ํ : 0.8ms
- ์ฝํ ๊ณต๊ฒฉ (10 req/s): ์ ์ฑ ์์ฒญ ์ฒ๋ฆฌ์ 23ms(28.75๋ฐฐ) ์์. ์ ์ ์์ฒญ๋ 4ms๋ก ์ง์ฐ.
- ์ค๊ฐ ๊ณต๊ฒฉ: ์ ์ฑ ์์ฒญ ์ฒ๋ฆฌ์ 45.6ms(57๋ฐฐ) ์์. ์ ์ ์์ฒญ 13.5ms๋ก ํฌ๊ฒ ์ง์ฐ.
- ๊ฐํ ๊ณต๊ฒฉ (1 req/s): ์ ์ฑ ์์ฒญ ์ฒ๋ฆฌ์ 90.9ms(113.6๋ฐฐ) ์์. ์ ์ ์์ฒญ 6ms ์ง์ฐ.
- ๋ฐฉ์ด ์ฑ๊ณผ : ์ต์ 80.9% ~ ์ต๋ 95.3% ๋ ์ผ์ฐ ํ์ง. ์ฌ์ฉ์ ๊ณต๊ฐ์์์ ์๋ณธ K-means์๋ ์ ํ๋ ์ฐจ์ด๊ฐ ๋ฏธ๋ฏธ
- Billion Laughs / XML Bomb
- ํ๊ฒ : DeDoS / ๋ฉ๋ชจ๋ฆฌ ๋ฐ CPU ๊ณ ๊ฐ
- ๊ณต๊ฒฉ ๊ฐ๋๋ณ ์ง์ฐ ํ์ : ํธ๋ํฝ ํ๊ฒฝ์ 250~750 req/s๋ก ๋ณ๋์ฑ ์
- ์ ์ ์ํ : 6.87ms
- ์ฝํ ๊ณต๊ฒฉ (15 req/s): ํ๊ท 29.28ms (4.26๋ฐฐ ์ง์ฐ).
- ๊ฐํ ๊ณต๊ฒฉ (1 req/s): ํ๊ท 203ms (29.55๋ฐฐ ์ง์ฐ).
- ๋ฐฉ์ด ์ฑ๊ณผ : ์ฝํ ๊ณต๊ฒฉ์ 78.83%, ๊ฐํ ๊ณต๊ฒฉ์ ์ต๋ 97% ๋ ๋น ๋ฅด๊ฒ ํ์ง
- SlowLoris
- ํ๊ฒ: Apache / ๋คํธ์ํฌ ์ฐ๊ฒฐ ๊ณ ๊ฐ
- ๋ฐฉ์ด ์ฑ๊ณผ : TCP ์ ํด ์๊ฐ์ด ๋น์ ์์ ์ผ๋ก ๊ธธ์ด์ง๋ ๊ฒ์ ๋ณด๊ณ ๋จ 5์ด ๋ง์ ํ์ง. 75% ๋น ๋ฆ
- ReDoS
Related Work
In-kernel Detection
- Radmin, Cogo ๋ฑ ๊ธฐ์กด์ ์ปค๋ ๊ธฐ๋ฐ ๋ฐฉ์ด ์์คํ
- ํ์ต์ ์ ๋ถ~์ ์ผ์ด ์์๋๋ฉฐ, ๊ณต๊ฒฉ์ ํ์งํ๋ ๋ฐ ์ ์ด๊ฐ ๊ฑธ๋ฆผ
- ์ถ์ ๋จ์๊ฐ ํ๋ก์ธ์ค๋ ์ฐ๊ฒฐ ๋จ์์ฌ์ ์ ๋ฐํ ์ ์ฑ ์์ฒญ ํ๋ณ์ด ์ด๋ ค์
- FINELAME : ํ์ต์ ์ ์ด~๋ง์ดํฌ๋ก์ด ๋ด์ ์๋ฃํ๋ฉฐ ๊ณต๊ฒฉ ํ์ง๋ ms ๋จ์์ In-flight ํ์ง.
- ๊ฐ๋ณ ์์ฒญ ๋จ์๋ก ์ถ์ ํ์ฌ ์ ์ ํธ๋ํฝ ์ฌ์ด์ ์์ด ๋ณด๋ด๋ ๊ณต๊ฒฉ์ ํ์ง ๋ฐ ์์ธ ๋ถ์์ด ๊ฐ๋ฅ
Application-based Detection
- ๊ธฐ์กด ๊ธฐ์ ์ ํ๊ณ
- DSHIELD : ์๋ฒ์ ๋ชจ๋ ์คํ ๊ฒฝ๋ก๋ฅผ ์ฌ์ ์ ํ์ ํ๊ณ ์์ด์ผ ํจ
- BreakApp : ๊ฐ๋ฐ์๊ฐ ์ง์ ์ฐจ๋จ ๊ธฐ์ค(Threshold)์ ์๋์ผ๋ก ์ ๋ ฅํด์ผ ํจ
- Rampart : PHP ๋ฑ ํน์ ์ธ์ด๋ CPU ์์์๋ง ๊ตญํ๋์ด ์๋ํจ.
- FINELAME : ์ ์ ํธ๋ํฝ์ ๊ด์ฐฐํ์ฌ ์ค์ค๋ก ํ์ตํ๋ฏ๋ก ์ฌ์ ์ง์์ด๋ ์์ค ์ฝ๋ ์์ ์ด ์ ํ ํ์ ์์
- ์ฌ๋ฌ ์ธ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฒ์ฉ์ฑ ์๊ฒ ํ์ง
Performance Anomaly Detection
- Magpie, X-trace, X-ray ๋ฑ์ ๊ธฐ์กด ์ฑ๋ฅ ์ด์ ํ์ง : ์ฌํ ๋ถ์์ ๋จธ๋ญ
- FINELAME : In-flight์ ์ค์๊ฐ์ผ๋ก ํ์ง
๊ธฐํ ๊ธฐ์กด ๋ฐฉ์ด ๊ธฐ๋ฒ
- Volumetric DoS : ADoS์๋ ๋ฌด์ฉ์ง๋ฌผ
- ํ๋ก๊ทธ๋๋จธ ์๋ ์ด๋ ธํ ์ด์ : ๊ฐ๋ฐ์๊ฐ ์ฝ๋์ ์ง์ ์์ ํ๋๋ฅผ ๋ช ์ํ๋ ๊ฒ์ ๋นํ์ค์
Contribution
- ์ญํธํ์ฑ : ์ ํ๋ฆฌ์ผ์ด์ ์์ค ์ฝ๋๋ ๋ฆฌ๋ ์ค OS ์ปค๋ ์์ ์ด ํ์ ์๋ ํ๋ฌ๊ทธ์ธ ํํ
- in-flight ํ์ง ์ฒด๊ณ
- ํ๋ซํผ/์ธ์ด์ ์๊ด ์๋ ์์ ๋ชจ๋ํฐ ๋ฐ ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณต
- FINELAME์ eBPF ๊ธฐ๋ฐ ๊ตฌํ ๋ฐ ํ๊ฐ
- ์ปค๋ ๋ด ์ด๊ฒฝ๋ ML ๊ตฌํ
๋ด ์๊ฐ
- ํ๊ณ
- ADoS๋ก ํ๊ฒ์ด ์์.
- ํ์ง ์ ์ ์ ํธ๋ํฝ๋ง ์จ๋ค๋ ๊ฐ์ ์ด ์์ด์ผ ํจ
- ML์ด๋ผ ์ญ์ concept drift
- ์ ์ง ๋ณด์ : Apache์
core_create_conn์ด๋ Node.js์uv_stream_t๊ฐ์ ๋ด๋ถ ํต์ฌ ํจ์๋ช ๊ณผ ๊ตฌ์กฐ์ฒด๊ฐ ๋ฒ์ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ - ๋ ผ๋ฌธ์์๋ ์คํ์ ์ํด ์๋ฒ๊ฐ ์ฒ๋ฆฌํ๋ ์์ฒญ์ ์ข ๋ฅ(K)๋ฅผ 3๊ฐ($K=3$)๋ก ๋จ์ํํ์ต๋๋ค. ํ์ง๋ง ์ค์ ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ(์: ๋ทํ๋ฆญ์ค, ์๋ง์กด)์ ๋ง์ดํฌ๋ก์๋น์ค๋ ์๋ฐฑ~์์ฒ ๊ฐ์ ์๋ก ๋ค๋ฅธ API(์์ฒญ ์ ํ)๋ฅผ ๊ฐ์ง. ์ค์๊ฐ์ผ๋ก ๋ชจ๋ ์ค์ฌ์ (Centroid)๊ณผ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๋ค๋ฉด eBPF์ ์ฐ์ฐ ์ ์ฝ(๋ช ๋ น์ด ์ ์ ํ)์ ๊ฑธ๋ฆฌ๊ฑฐ๋ ์ค๋ฒํค๋๊ฐ ๊ธ์ฆํ ์ํ์ด ์์
Leave a comment