보안 레드팀 — JWT/인증/검증 라이브러리 "신뢰 가능" 판정 적대적 공격
개요
인증카드.md(/Users/ef/crowny-rpnkit/라이브러리카드/인증카드.md)가 "JWT.한선 서명검증 자체는
신뢰 가능"이라 내린 판정을 실제 공격 코드로 검증. 검증카드.md의 SQL안전() 등도 재공격.
전부 실제 한선씨 코드로 컴파일+실행해 통과/거부를 실측(무접촉, 라이브 파일 미수정).
무엇을 했는지
- JWT.한선 서명 위조 5종 공격(alg:none류/헤더조작/서명절단/키추측/exp) — 서명 위조는
- ★신규 최상위 CRITICAL 발견:
무작위()가srand()없이rand()를 그대로 사용 —
- 세션삭제 후 권한상승 실공격 재현: role=admin 저장 → 세션삭제(로그아웃) → 탈취한
- SQL안전() 우회 범위 확대: 검증카드는 대소문자 문제만 지적했으나, OR/AND/SELECT/
- 솔트 고정값 → 레인보우 공격 재현: 서로 다른 두 계정이 같은 비밀번호를 쓰면 저장값이
- XSS안전() URI스킴 우회: javascript:/data: 스킴, 속성 breakout 페이로드가 완전 무변형
<script> 본문 텍스트가 태그 제거 후에도 잔존함을 신규 확인.
- JWT 서명 비교가
memcmp(비상수시간) 구현임을 코드 레벨로 확인(원격 타이밍 실공격은
관련 파일
- 최종 보고서:
/Users/ef/crowny-rpnkit/적대검증/레드팀/보안_레드팀.md - 공격 예제 6종(전부 컴파일+실행 검증됨):
/Users/ef/crowny-rpnkit/적대검증/레드팀/공격예제/ - 재검증 스크립트:
/Users/ef/crowny-rpnkit/적대검증/레드팀/레드팀검증.sh(6/6 PASS) - 원본 카드:
/Users/ef/crowny-rpnkit/라이브러리카드/인증카드.md,.../검증카드.md - 근본원인 소스:
/Users/ef/CrownyOS/crownyc/crownyc.c:15000(opcode 613, RANDOM),:6140(opcode 162, EQ/memcmp)
잔여 이슈 (파동② 제안, 보고서 §8)
- P(-1) 신규 최우선:
crownyc.cVM 시작부에srand()호출 추가(엔트로피 소스 권장) —
- P0(카드 유지): 세션삭제() 복합키 전체삭제, SQL안전() 블록리스트 대규모 보강(또는 파라미터화
- P1: XSS안전() URI스킴 차단 헬퍼. P2: JWT 서명 비교 상수시간화.
- 실제 코드 수정은 이번 레드팀 범위 밖(라이브 무접촉 지시) — 파동② 착수 시 진행.