Skip to content

[ Auth ] 인가·인증 취약점 수정 #54

Description

@RosieOh

🧑‍💻 오늘의 개발하면서 생긴 크고 작은 이슈사항을 기록해주세요

💚 어떤 기능인가요?

인가·인증 계층의 취약점 5건을 수정합니다. 로그인만 하면 남의 글을 지울 수 있고, 30일짜리 토큰으로 보호된 API를 호출할 수 있는 상태였습니다.

1. 커뮤니티 IDOR — 게시글·댓글 수정/삭제에 작성자 검증이 없습니다.

2. JWT 토큰 혼용 — Refresh Token 은 role 클레임 없이 발급되는데 필터가 타입을 구분하지 않아 ROLE_null 로 인증이 성립합니다. 반대로 refreshTokens() 는 Access Token 도 받아줍니다.

3. 비밀번호 해시 노출UserDto.password 가 직렬화 대상이라 회원가입 응답에 BCrypt 해시가 실려 나갑니다.

4. 사용자 열거 — 미가입 404 / 비밀번호 오류 401 로 가입 여부가 드러납니다. 탈퇴 계정도 로그인됩니다.

5. 어드민 인증 구조 파손 — 필터는 /admin 을 스킵하는데 SecurityConfighasRole("ADMIN") 을 요구해 항상 403. 컨트롤러는 STATELESS 정책 아래 SecurityContextHolder 를 직접 조작해 인증이 요청과 함께 소멸하고, 템플릿 엔진이 없어 뷰 렌더링 자체가 불가능합니다.

✅ To Dos

  • 게시글·댓글 소유권 검증 추가 (작성자 본인 또는 ADMIN)
  • JWT typ 클레임(access/refresh) 도입, 필터는 Access 만 허용, iss/jti 추가
  • @JsonProperty(WRITE_ONLY) 로 비밀번호 응답 차단
  • 로그인 실패 응답 401 로 통일, 탈퇴 계정 로그인 차단
  • 어드민을 JWT 기반 REST API(/api/admin/**)로 통합

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions