243. OWASP Core Rule Set (CRS) — WAF의 절대 방패 (규칙 세트)

⚠️ 이 문서는 해커들이 웹사이트를 털기 위해 쏘는 수만 가지의 기상천외한 공격(SQL 인젝션, XSS 등) 패턴을 개발자가 일일이 상상해서 막는 헛수고를 끝내기 위해, **글로벌 비영리 보안 단체인 OWASP가 전 세계 해커들의 공격 지문(패턴)을 싹 다 긁어모아 "이 텍스트 규칙 뭉치 1세트만 너희 웹 방화벽(WAF) 뱃속에 밀어 넣으면, 웹 해킹의 80%를 그냥 꽁짜로 튕겨내게 해줄게!"라고 배포한, 전 세계 클라우드 WAF(AWS, Cloudflare)의 심장부로 쓰이는 오픈소스 표준 방어 백과사전인 'OWASP CRS'**를 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: ModSecurity(모드시큐리티) 같은 오픈소스 웹 방화벽 엔진이 멍청한 깡통이라면, CRS는 그 엔진에 생명을 불어넣는 뇌(알고리즘)이자 방어 룰(Rule) 텍스트 파일들의 거대한 묶음집이다.
  2. 가치: 회사가 1,000만 원짜리 WAF 장비를 사지 않아도, AWS WAF 콘솔에서 "OWASP Top 10 방어 룰" 버튼 하나만 딱 켜면 이 CRS 룰들이 자동으로 장착되어 수만 가지의 웹 해킹 공격을 0.001초 만에 튕겨내는 가성비 최고의 방어망을 즉시 얻게 된다.
  3. 기술 체계 (치명적 한계): 단순히 한 줄 걸리면 쳐내는 무식한 차단이 아니라, 공격 의심 패킷이 들어올 때마다 위험도 점수(Anomaly Score)를 5점, 10점씩 누적하여 임계치를 넘을 때만 차단하는 똑똑한 방식을 쓴다. 단, 룰이 너무 빡세서 정상 고객의 폼 입력마저 차단해 버리는 오탐(False Positive) 폭탄의 주범이기도 하다.

Ⅰ. 방탄조끼의 내피: ModSecurity와 CRS의 영혼의 단짝

총(엔진)만 있으면 뭐하나, 총알(룰셋)이 없으면 고철 덩어리일 뿐이다.

  1. ModSecurity (모드시큐리티)의 탄생:
    • 과거 텅 빈 웹 서버(Apache, Nginx)는 공격을 막을 방법이 없었다.
    • 개발자들이 이 웹 서버 앞단에 ModSecurity라는 플러그인(WAF 엔진)을 달았다.
    • 근데 이 엔진은 그냥 '빈 깡통 검문소'였다. 어떻게 생겨 먹은 놈을 잡으라는 '수배 전단지(Rule)'가 없어서 아무도 잡지 못하고 멍때리고 있었다.
  2. OWASP Core Rule Set (CRS)의 투입:
    • 이때 전 세계 최고의 보안 전문가 단체인 OWASP가 등판한다.
    • "야, 우리가 밤새워서 SQL 인젝션, 크로스 사이트 스크립팅(XSS), 로컬 파일 삽입(LFI) 같은 끔찍한 공격들의 정규 표현식 패턴 1만 개를 텍스트 파일로 다 짜놨어! 이걸 **'Core Rule Set'**이라고 부를게!"
    • 이 룰 뭉치를 다운로드받아 ModSecurity 뱃속에 딱 넣어주는 순간, 빈 깡통이었던 웹 서버가 전 세계 최고 수준의 철통 방어 요새(WAF)로 각성하게 된다.

📢 섹션 요약 비유: **ModSecurity(WAF 엔진)**는 튼튼하고 덩치 큰 경비 로봇(하드웨어)입니다. 하지만 뇌가 텅 비어서 누가 도둑인지 모릅니다. OWASP CRS는 경찰청에서 전송해 주는 '전국 1급 흉악범 몽타주와 행동 패턴 1만 개가 담긴 AI 칩(룰 세트)'입니다. 이 칩을 경비 로봇 뒤통수에 꽂아 넣는 순간, 로봇은 레이저 눈을 번뜩이며 1초에 1,000명의 손님이 들어와도 그들 주머니에 숨겨진 흉기(SQL 인젝션)를 0.01초 만에 색출해 내어 밖으로 걷어차 버리는 완벽한 사이보그 경호원으로 돌변합니다.


Ⅱ. CRS의 필살기: 이상 탐지 스코어링 (Anomaly Scoring)

칼 한번 스쳤다고 사형시키지 않는다. 죄질의 점수를 누적해서 벤다.

  1. 전통적 IDS/WAF의 멍청한 즉결 처형:
    • 옛날 스노트(Snort) 같은 놈들은 패킷에서 UNION SELECT 글자가 딱 1번만 발견되어도, 앞뒤 맥락 안 보고 무조건 멱살을 잡고 차단(Drop)해 버렸다 (오탐의 지옥).
    • 일반 고객이 게시판에 "저번에 에러 났을 때 UNION SELECT라고 떴어요"라고 정상적인 질문 글을 써도 가차 없이 차단당해 회사 클레임이 폭주했다.
  2. CRS의 유연한 채점 시스템 (Anomaly Score Mode) $\star$:
    • CRS는 똑똑하다. 룰에 걸려도 즉시 차단하지 않는다. 대신 **'위험도 점수(Score)'**를 몰래 장부에 누적(Accumulate)시킨다.
    • "어? 이놈 패킷에 SQL 의심 문자가 있네? 너 [+5점] 적립."
    • "근데 이놈 User-Agent(브라우저 정보)가 텅 비어있네? 사람이 아니라 봇(Bot) 같아! 너 [+3점] 추가 적립."
    • "어? 헤더 길이도 비정상적으로 기네? 너 [+3점] 추가."
  3. 임계치(Threshold) 돌파 시의 폭파:
    • 관리자가 "누적 점수 10점이 넘으면 차단해라!"라고 임계치를 설정해 뒀다 치자.
    • 방금 그 놈은 5+3+3 = 11점이 되었다.
    • 그 순간 WAF가 씩 웃으며 "너 이 새끼, 종합적으로 냄새가 썩어 문드러지는 해커 놈이 확실하구나!"라며 냅다 403 Forbidden 싸대기를 날려 통신을 끊어버린다. (오탐률을 획기적으로 낮추고 정확도를 극대화한 현대 WAF의 밥줄 기술이다.)

📢 섹션 요약 비유: 전통적 방식은 길 가다 주머니에서 칼(위험 문자열)이 살짝 보이면 묻지도 않고 그 자리에서 사살하는 경찰입니다. 정육점 사장님(정상 고객)도 무참히 죽죠. CRS 스코어링은 '프로파일러 탐정'입니다. 칼이 보이면 일단 수첩에 "칼 소지(5점)"를 적습니다. 그리고 그놈의 다른 행동을 계속 봅니다. "검은 복면을 썼군(3점), cctv를 피해서 걷는군(3점)." 종합 점수가 10점을 넘어가는 순간, 단순한 정육점 사장이 아니라 100% 강도라는 확신(임계치 돌파)을 얻고 덮치는, 억울한 피해자(오탐)를 만들지 않는 과학 수사 기법입니다.


Ⅲ. 편집증의 4단계: 편집증 수준 (Paranoia Level, PL)

어디까지 옥죌 것인가? 방패를 너무 두껍게 들면 숨이 막혀 죽는다.

  1. PL (Paranoia Level)의 도입:
    • 아무리 스코어링을 해도, 룰 1만 개를 몽땅 다 켜놓으면 정상 트래픽도 100% 다 튕겨 나가는 미친 깐깐함의 지옥이 열린다.
    • 그래서 CRS는 룰의 '빡셈(민감도)' 정도를 PL 1단계부터 PL 4단계까지 조절할 수 있는 밸브(스위치)를 만들어 놨다.
  2. 레벨별 극단적 온도 차이:
    • PL 1 (기본값, 기본 보안): 가장 치명적이고 뻔한 놈들만 잡는다. 오탐(정상인 차단)이 거의 없어서 켜놓고 꿀잠 자도 된다. (대부분의 일반 기업 세팅)
    • PL 2 (조금 민감): 특수 문자나 정규식 검사가 빡세진다. 여기서부터 약간의 튜닝(오탐 예외 처리)을 안 해주면 게시판에 한자나 기호 쓰는 고객들이 튕기기 시작한다.
    • PL 3~4 (결벽증 환자): 은행 코어 시스템이나 국방망에서 쓴다. "내가 허락하지 않은 ASCII 문자(예: 이상한 폰트 기호)는 1바이트라도 무조건 다 차단해!"라는 끔찍한 강박증 수준이다. 켜는 순간 회사 웹사이트 기능의 절반이 멈춰버려 보안팀이 밤새워 튜닝 노가다를 해야만 겨우 돌릴 수 있다.
  3. 클라우드 생태계의 절대 왕좌:
    • 이 미친 유연성과 완벽함 덕분에, 오늘날 여러분이 클라우드에서 클릭 한 번으로 켜는 AWS WAF, Azure WAF, Cloudflare WAF의 'Managed Rule(관리형 룰)' 뱃속에는 전부 이 OWASP CRS가 핵심 코어 엔진으로 탑재되어 돌아가고 있다. 인류 웹 보안의 거대한 산맥이다.

📢 섹션 요약 비유: 공항 검색대(WAF)의 민감도(PL) 조절 다이얼입니다. PL 1은 딱 대포나 수류탄 같은 큼직한 무기만 삑! 소리 나게 세팅합니다(오탐 0%). 승객들이 편하게 슝슝 지나갑니다. PL 4로 다이얼을 확 돌리면 결벽증이 발동합니다. 손톱깎이, 손톱깎이 끄트머리에 붙은 쇠 부스러기, 심지어 허리띠 버클이나 은니빨 임플란트에까지 삐이익! 경고음을 울리며 공항 전체를 마비(오탐 폭발)시킵니다. 보안은 100% 뚫리지 않겠지만, 공항 직원(보안팀)이 달려가 일일이 은니빨 승객에게 '통과 딱지(예외 처리)'를 붙여주느라 과로사하게 되는 무서운 트레이드오프의 밸브입니다.