피드로 돌아가기
Hacker NewsSecurity
원문 읽기

Markdown의 모호한 문법이 초래하는 보안 취약점과 파싱 설계의 한계
Why the heck are we still using Markdown?
AI 요약
Context
Markdown은 단순 문서 작성을 목적으로 설계된 최소 기능 언어. 불분명한 명세와 과도한 기능 확장으로 인해 동일 출력물에 대해 너무 많은 입력 조합이 존재하는 구조. 이러한 모호함이 파서 구현의 복잡도를 높이고 시스템 취약점을 유발하는 원인.
Technical Solution
- CommonMark 표준 도입을 통한 문법의 명확한 명세화 시도
- 다양한 강조 표기법(Bold, Italic)의 중복 허용으로 인한 파싱 로직의 복잡도 증가
- Markdown 내 HTML 인라인 허용으로 인해 HTML 파서를 함께 포함해야 하는 의존성 구조
- 복잡한 중첩 문법 처리 과정에서 정규 표현식의 비효율적 매칭 발생
- 단순 마크업 언어의 한계를 극복하기 위해 LaTeX, PlantUML 등 외부 확장 기능을 추가하는 파편화된 설계 방식
Impact
- markdown-it 라이브러리에서 CVSS 6.9 수준의 ReDoS(Regular Expression Denial of Service) 취약점 발생
Key Takeaway
단순함을 지향하는 도구라도 명확한 표준 없이 기능이 확장되면 구현 복잡도가 기하급수적으로 증가하며, 이는 곧 보안 취약점으로 직결되는 엔지니어링 트레이드오프를 보여줌.
실천 포인트
사용자 입력 기반의 Markdown 파서를 구현할 때 ReDoS 취약점을 방지하기 위해 정규 표현식 사용을 최소화하고 검증된 최신 표준 라이브러리를 사용할 것