gyumin.log

인증 우회 (Authentication Bypass)

로그인을 뚫는 방법이 비밀번호를 알아내는 것만 있는 건 아니다. 로그인 절차 자체를 건너뛰는 인증 우회를 정리한다.

정의

정상적인 로그인·인증 절차를 거치지 않고 인증된 사용자 권한을 얻는 취약점. 비밀번호를 깨는 게 아니라 인증 로직의 허점을 노린다.

왜 생기나

인증 처리의 설계 결함에서 나온다. 인증 상태를 클라이언트가 조작할 수 있는 값으로 판단하거나, 다단계 인증의 중간 단계를 건너뛸 수 있을 때 생긴다.

공격 방식

유형어떻게
로직 결함비밀번호 재설정 토큰이 추측 가능하거나 검증이 허술
파라미터 조작응답의 isAdmin=false나 쿠키 권한 값을 true로 변조
강제 브라우징관리자 페이지 주소(/admin)를 직접 입력했더니 인증 확인 없이 열림
MFA 우회2단계 인증 응답을 조작하거나, 1차 인증 후 세션이 2차 완료 전에 이미 유효
  • 강제 브라우징이 가장 허무하다. 로그인 후에만 보여야 할 페이지가, 링크만 없을 뿐 주소를 직접 치면 그냥 열리는 경우다. 서버가 “화면에 링크를 안 보여준 것”과 “접근을 막은 것”을 헷갈린 결과다.
  • 파라미터 조작은 클라이언트가 보낸 값을 서버가 그대로 믿을 때 성립한다. 권한 판단을 브라우저 쪽 값에 맡기면 안 되는 이유다.

실제 사례 유형

  • 비밀번호 재설정 결함: 재설정 링크의 사용자 식별자를 바꾸면 임의 계정의 비밀번호를 재설정할 수 있었던 사례. IDOR과 결합된 인증 우회로 버그바운티에서 자주 나온다.
  • MFA 우회: OTP 입력 단계의 응답을 조작하거나, 1차 인증 직후 발급된 세션이 2차 인증을 마치기 전에 이미 유효해 2차를 건너뛴 사례.

막는 법

  • 인증·권한 판단은 항상 서버에서, 매 요청마다 다시 확인한다. 클라이언트가 보낸 권한 값은 절대 믿지 않는다.
  • 보호가 필요한 모든 페이지·API에 접근 제어를 건다. “링크를 숨기는 것”은 방어가 아니다.
  • 비밀번호 재설정 토큰은 추측 불가능하게(랜덤·만료·1회용) 만든다.

앞서 본 IDOR과 묶어 보면 결국 같은 뿌리다. 권한을 서버가 매번 확인하지 않는 것. 자원 접근에서 터지면 IDOR, 인증 단계에서 터지면 인증 우회다.

용어: MFA(Multi-Factor Authentication)는 비밀번호 외에 OTP 등 추가 인증을 요구하는 다단계 인증. 버그바운티는 취약점을 신고하면 포상하는 제도.