[IT/기술] [트렌드] 마크다운 게시판에서 HTML이 렌더링된다? XSS 보안 위험 쉽게 알아보기
[트렌드] 마크다운 게시판에서 HTML이 렌더링된다? XSS 보안 위험 쉽게 알아보기
발견한 현상
AI로 생성한 글을 커뮤니티 게시판에 붙여넣었더니 이상한 일이 발생했습니다.
- 일반 모드: HTML/CSS 코드가 텍스트로 그대로 노출됨
- 마크다운 모드: HTML+CSS가 실제로 렌더링됨 (모바일 사이즈로 찌그러져서)
왜 이런 일이 벌어졌을까요?
마크다운은 원래 HTML을 허용한다
마크다운 창시자(John Gruber)가 설계할 때부터 정한 규칙입니다.
"마크다운 문법으로 표현할 수 없는 것은 HTML을 그대로 사용하면 된다."
즉, 마크다운 안에 <div>, <style>, <table> 같은 HTML 태그를 넣으면 그대로 렌더링됩니다. 이건 버그가 아니라 의도된 동작입니다.
그런데 이게 왜 위험한가? - XSS 공격
XSS(Cross-Site Scripting)란 다른 사용자의 브라우저에서 공격자의 악성 코드가 실행되는 것입니다.
공격 시나리오
1. 공격자가 게시글에 악성 스크립트를 삽입
2. 다른 사용자가 그 게시글을 열람
3. 사용자 브라우저에서 악성 코드가 자동 실행
4. 로그인 세션 탈취, 개인정보 유출 등 피해 발생
위험 단계별 정리
| 허용된 태그 | 위험도 | 가능한 공격 |
|---|---|---|
<style> |
중간 | 가짜 로그인 폼 표시, CSS로 데이터 탈취 |
<img onerror="..."> |
높음 | 이미지 로드 실패 시 스크립트 실행 |
<script> |
매우 높음 | 쿠키 탈취, 키 입력 감시, 계정 도용 |
핵심 포인트
<style> 태그가 통과된다는 것은 HTML 필터링이 느슨하다는 신호입니다.
<style>이 되면 다른 우회 방법도 존재할 가능성이 높습니다.
플랫폼별 HTML 허용 정책 비교
| 플랫폼 | style 태그 | script 태그 | 이벤트 핸들러 |
|---|---|---|---|
| GitHub | 제거 | 제거 | 제거 |
| Notion | 제거 | 제거 | 제거 |
| Discord | 전부 제거 | 전부 제거 | 전부 제거 |
| 일부 커뮤니티 | 허용 | 보통 차단 | 필터링 불확실 |
대부분의 대형 플랫폼은 보안을 위해 HTML을 엄격하게 필터링합니다.
실제 피해가 발생하면?
공격자가 게시글에 악성 코드 삽입
|
피해자가 글 열람
|
피해자 브라우저에서 자동 실행:
- 로그인 쿠키(세션) 탈취 -> 계정 도용
- 키 입력 감시 -> 비밀번호 유출
- 가짜 로그인 창 표시 -> 피싱
- 피해자 명의로 글 작성/삭제
게시판 운영자가 해야 할 것
- 마크다운 렌더링 시 HTML 새니타이징(sanitizing) 적용
-
허용할 태그를 화이트리스트로 관리 (예:
<b>,<i>,<a>정도만) -
<style>,<script>, 이벤트 핸들러(onerror,onclick등) 모두 제거 - CSP(Content Security Policy) 헤더 설정
사용자가 주의할 점
- AI가 생성한 HTML 코드를 게시판에 그대로 붙여넣지 말 것
- AI에게 요청할 때 "순수 텍스트" 또는 "마크다운만" 이라고 지정할 것
- 의심스러운 게시글에서 로그인 폼이 뜨면 절대 입력하지 말 것
AI 시대에 콘텐츠 생성은 쉬워졌지만, 그만큼 보안 의식도 함께 높아져야 합니다. 게시판에 글을 올릴 때, 어떤 코드가 포함되어 있는지 한 번 더 확인하는 습관이 필요합니다.
실시간 채팅
4개 메시지실시간채팅도 돼
이욜
메뉴마다 채팅을 다르게 할수 잇네요 ㅋㅋ
맞아..