abstract-syntax-tree

2 개의 포스트

Cloudflare 클라이언트 측 보안: 더 스마트해진 탐지, 이제 누구나 이용 가능 (새 탭에서 열림)

Cloudflare는 클라이언트 사이드 보안(Client-Side Security) 기술을 모든 사용자에게 개방하고, 고도화된 스키밍 공격을 탐지하기 위해 대규모 언어 모델(LLM)을 결합한 새로운 AI 탐지 시스템을 도입했습니다. 이번 업데이트를 통해 셀프 서비스 고객도 'Advanced' 기능을 사용할 수 있게 되었으며, 특히 오탐지(False Positive)를 획기적으로 줄이면서도 복잡한 자바스크립트 공격에 대응할 수 있는 다중 방어 체계를 구축한 것이 핵심입니다. **클라이언트 사이드 보안의 작동 원리** * **브라우저 보고 기반 탐지:** 별도의 스캐너나 애플리케이션 수정 없이, 브라우저의 콘텐츠 보안 정책(CSP) 보고 기능을 활용해 신호를 수집하므로 지연 시간이 발생하지 않습니다. * **폭넓은 접근성:** 모든 무료 플랜 사용자에게 도메인 기반 위협 인텔리전스를 제공하며, 유료 셀프 서비스 고객은 코드 변경 모니터링 및 능동적 차단 규칙이 포함된 Advanced 기능을 즉시 사용할 수 있습니다. * **컴플라이언스 지원:** 지속적인 코드 변경 탐지 기능을 통해 PCI DSS v4(요구사항 11.6.1)와 같은 최신 보안 규정을 준수할 수 있도록 돕습니다. **추상 구문 트리(AST)와 의도 분석** * **데이터 규모와 변동성 관리:** 기업당 평균 2,200개의 고유 스크립트가 존재하며 그중 33%가 매달 업데이트되는 환경에서, 단순한 수동 승인이 아닌 스크립트의 '의도'를 파악하는 방식에 집중합니다. * **구조적 패턴 분석:** 자바스크립트 코드를 AST로 분해하여 논리적 구조를 분석함으로써, 변수명 변경이나 코드 난독화 여부와 관계없이 공격자의 패턴을 식별합니다. **GNN과 LLM을 결합한 하이브리드 탐지 아키텍처** * **GNN 기반 1차 선별:** 그래프 신경망(GNN)이 AST의 구조적 특성을 학습하여 제로데이 위협을 높은 재현율(Recall)로 빠르게 걸러냅니다. * **LLM 기반 2차 검증:** 0.3% 미만의 낮은 오탐율조차 일일 35억 건의 데이터 규모에서는 막대한 노이즈가 되므로, Cloudflare Workers AI에서 실행되는 LLM이 2차 판단을 내립니다. * **계층적 분류 알고리즘:** 모든 스크립트를 LLM으로 분석하는 대신, GNN이 의심스럽다고 판단한 항목만 LLM에 전달하는 '계단식 구조'를 통해 성능 최적화와 정확도 향상을 동시에 달성했습니다. **오탐지 해결을 위한 시맨틱 이해** * **복잡한 코드 구분:** 봇 차단 솔루션이나 광고 트래킹 스크립트처럼 난독화되어 있지만 정상적인 코드를 LLM의 심층적인 문맥 이해력을 통해 공격 코드로 오인하지 않도록 분류합니다. * **보안 팀의 피로도 감소:** 정확도가 낮은 경보를 획기적으로 줄임으로써, 보안 담당자가 실제 위협적인 침해 사고에만 집중할 수 있는 환경을 제공합니다. 웹사이트를 운영하는 조직은 Cloudflare의 새로운 Advanced 기능을 활용해 PCI DSS v4 준수 요건을 충족하는 동시에, 복잡해지는 공급망 공격(Supply Chain Attack)으로부터 사용자 데이터를 보호할 수 있습니다. 특히 난독화된 서드파티 스크립트가 많은 환경이라면, LLM 기반의 고도화된 탐지 엔진을 적용해 보안과 운영 효율성을 모두 확보할 것을 권장합니다.

AST로 Outdated 없는 퍼널 문서 만들기 (새 탭에서 열림)

토스팀은 복잡한 판매자 입점 퍼널을 효율적으로 관리하기 위해 코드를 정적으로 분석하여 자동으로 업데이트되는 퍼널 문서를 구축했습니다. 기존의 수동 문서는 빈번한 코드 변경을 따라가지 못해 실효성을 잃었으나, `ts-morph`와 AST(Abstract Syntax Tree) 분석을 통해 코드와 100% 일치하는 흐름도를 생성할 수 있게 되었습니다. 이를 통해 개발자는 복잡한 조건부 분기와 페이지 이동 로직을 별도의 문서 작업 없이도 시각적으로 정확하게 파악할 수 있게 되었습니다. **수동 문서화의 한계와 정적 분석의 선택** * **문서의 파편화:** 수기로 작성된 다이어그램은 코드가 수정될 때마다 즉시 업데이트되지 않아 실제 동작과 문서가 불일치하는 'Outdated' 문제가 발생합니다. * **복잡한 분기 처리의 어려움:** 수십 개의 페이지와 80여 개의 조건부 분기를 시각적 도구로 일일이 표현하는 것은 휴먼 에러의 위험이 크고 관리가 불가능합니다. * **정적 분석 채택:** 런타임 분석은 모든 경로를 직접 실행해야 하는 번거로움이 있지만, AST를 활용한 정적 분석은 코드를 텍스트로 읽어 모든 잠재적 경로를 빠르고 안전하게 추출할 수 있습니다. **Navigation Edge 데이터 구조 설계** * **맥락 정보 포함:** 단순한 이동 경로(A → B)를 넘어, 이동 방식(`push` vs `replace`), 실행 조건, 쿼리 파라미터 등의 상세 데이터를 포함하는 `NavigationEdge` 인터페이스를 설계했습니다. * **추적 가능성 확보:** 코드 내 정확한 위치(`lineNumber`)와 호출 출처(`sourceType`)를 저장하여 다이어그램에서 실제 소스 코드로 즉시 연결될 수 있는 기반을 마련했습니다. **AST를 활용한 로직 추출 및 조건문 파싱** * **패턴 감지:** `ts-morph`를 사용하여 프로젝트 내 페이지 파일을 탐색하고, `router.push()` 또는 `router.replace()`와 같은 함수 호출 패턴을 감지합니다. * **상위 노드 추적:** 특정 이동 로직이 발견되면 AST의 부모 방향으로 거슬러 올라가 가장 가까운 `if`문이나 삼항 연산자의 텍스트를 추출함으로써 이동 조건(Condition)을 파악합니다. **커스텀 훅 및 URL 상수의 역추적** * **숨은 로직 탐색:** 페이지 컴포넌트 내부뿐만 아니라, `import` 구문을 분석하여 커스텀 훅 내부에 숨겨진 이동 로직까지 추적하여 데이터 누락을 방지합니다. * **상수 해독:** `URLS.FUNNEL.PAY_METHOD`와 같이 상수로 정의된 목적지를 실제 URL 경로로 변환하기 위해 상수 정의 파일을 별도로 파싱하여 매핑 테이블을 구축했습니다. **실용적인 결론** 복잡도가 높은 서비스일수록 문서와 코드의 동기화는 자동화되어야 합니다. `ts-morph`와 같은 도구를 활용해 소스 코드를 단일 진실 공급원(Single Source of Truth)으로 삼는 자동화 문서를 구축하면, 불필요한 커뮤니케이션 비용을 줄이고 퍼널 전체의 비즈니스 로직을 명확하게 시각화할 수 있습니다.