flawopen.com/xss/C-cpp

● CWE-79 · 높음
보안 연구 · FlawOpen

취약점 분석: Cross-Site Scripting in C/C++

Learn how to fix Cross-Site Scripting (XSS) (CWE-79) in C and C++. Side-by-side vulnerable vs secure code examples for contextual entity escaping in CGI / Crow web services.

💡 알기 쉬운 설명 (ELI5)

공용 게시판에 '이 글을 읽는 즉시 옆 사람에게 지갑을 건네주시오'라는 메모를 붙여놓는 상황을 비유해 보겠습니다. 방문객들이 게시판에 붙은 메모의 지시를 무조건 따른다면, 악의적인 메모를 붙인 누구나 사람들의 돈을 훔칠 수 있게 됩니다.

핵심 개념 및 용어

Web Application Security
보안 개념 (Web Application Security): Core architecture component affected by CWE-79.
CWE-79
보안 개념 (CWE-79): Standard Common Weakness Enumeration classification for xss-c-cpp.
Defense-in-Depth
보안 개념 (Defense-in-Depth): Multi-layered engineering verification and runtime boundary isolation.

단계별 공격 실행 흐름

Step 1

악의적인 스크립트 페이로드 주입

공격자가 폼 입력창이나 URL 매개변수에 HTML 태그 또는 JavaScript(예: <script> 또는 <img onerror=...>)를 삽입합니다.

Step 2

이스케이프 없는 HTML 렌더링 또는 저장

웹 애플리케이션이 입력을 적절한 HTML 엔티티로 변환하지 않고 원시 문자열 그대로 페이지에 반영합니다.

Step 3

피해자 브라우저 DOM 해석 및 실행

피해자가 웹 페이지를 방문하면 브라우저가 주입된 코드를 실행 가능한 스크립트로 인식하여 실행합니다.

Step 4

세션 탈취 및 원본 보안 침해

스크립트가 피해자의 세션 권한으로 실행되어 인증 쿠키와 로컬 스토리지 토큰을 탈취합니다.

소스 코드 비교: 취약한 구현 vs 보안 패치

✕ 취약한 구현
/* comment text written with no encoding */
fprintf(response,
  "<div>%s</div>", comment_text);
✓ 보안 강화 패치
/* encode before insertion */
char *encoded = html_encode(comment_text);
fprintf(response,
  "<div>%s</div>", encoded);
free(encoded);

엔지니어링 및 시스템 보안 강화 체크리스트

References