
# PuneethReddyHC 이벤트 관리 시스템 v1.0의 반사형 XSS 취약점에 대한 보안 권고 영향 분석, 재현 절차, 그리고 완화 권장 사항을 포함한 PuneethReddyHC 이벤트 관리 시스템 v1.0의 반사형 XSS 취약점에 대한 상세 보안 권고입니다.
제목: register.php의 event_id 매개변수를 통한 반사형 크로스 사이트 스크립팅(XSS)
공급업체 / 저장소: PuneethReddyHC / event-management
영향을 받는 버전: 1.0(테스트 시점의 분기/태그 master)
제보자: Hafiz Pradana Gemilang
공개 상태: 공급업체에 비공개로 통보됨 — 사용자 안전을 위해 익스플로잇 PoC는 공개하지 않음.
상태 및 일정은 조정 또는 패치 릴리스 후 업데이트됩니다.
register.php에서 반사형 크로스 사이트 스크립팅(XSS) 취약점이 확인되었습니다. event_id GET 매개변수가 페이지 출력에 반영되기 전에 제대로 삭제(sanitize)되지 않습니다.
원격 공격자는 피해자가 링크를 방문하거나 리디렉션될 때 피해자의 브라우저에서 임의의 JavaScript를 실행하는 악성 URL을 만들 수 있습니다.
⚠️ 이 권고는 의도적으로 활성 익스플로잇 페이로드를 생략합니다.
전체 개념 증명(PoC)은 패치 개발을 위해 공급업체에 비공개로 제공되었습니다.
/register.php?event_id=<value>
예시(로컬 테스트):
http://<host>/event-management-master/register.php?event_id=1
성공적인 악용 시 영향을 받는 도메인 컨텍스트에서 임의의 JavaScript 실행이 가능합니다.
잠재적 결과:
HttpOnly가 아닌 경우)예상 CVSS v3.1: 6.1(중간) — AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N
event_id 매개변수에 JavaScript 페이로드가 포함된 URL을 만듭니다.전체 페이로드와 개념 증명은 공급업체와 비공개로 공유되었습니다.
유지관리자이고 액세스가 필요한 경우 제보자에게 문의하십시오(아래 참조).
반사형 XSS를 방지하려면 서버 측 검증 및 출력 인코딩을 적용하십시오.
입력 검증
event_id가 숫자인 경우 숫자 검증을 적용합니다:
$event_id = filter_input(INPUT_GET, 'event_id', FILTER_VALIDATE_INT);
if ($event_id === false) {
// 잘못된 입력 처리
}
출력 인코딩
HTML로 출력하기 전에 사용자 제공 데이터를 이스케이프합니다:
echo htmlspecialchars($event_id, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
보안 프레임워크 또는 템플릿 사용
컨텍스트 인식 이스케이프를 자동으로 수행하는 프레임워크를 선호합니다.
보안 쿠키
세션 쿠키에 HttpOnly, Secure 및 SameSite 플래그를 설정합니다.
콘텐츠 보안 정책(CSP)
엄격한 CSP를 적용하고 unsafe-inline 사용을 피합니다.
코드 검토 및 감사
애플리케이션 전체에서 다른 모든 반영 매개변수를 확인합니다.
// 숫자 입력 검증
$event_id = filter_input(INPUT_GET, 'event_id', FILTER_VALIDATE_INT);
if ($event_id === false || $event_id === null) {
$event_id = 0; // 또는 오류 표시 / 리디렉션
}
// 안전한 출력
?>
<span id="event-id"><?= htmlspecialchars($event_id, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ?></span>
<?php
htmlspecialchars() 문서: https://www.php.net/manual/en/function.htmlspecialchars.php제보자: Hafiz Pradana Gemilang
이 권고는 영향을 받는 소프트웨어 사용자를 보호하기 위해 상세한 익스플로잇 코드를 생략합니다.
전체 기술 세부 정보는 책임 있는 공개 조건에 따라 요청 시 공급업체 또는 승인된 조정자에게 제공됩니다.