DEEP DIVE REPORT

CVE-2026-67336 대응 가이드: better-auth OIDC·MCP 플러그인 암호화 기본값 점검

SecurityDesk
2026.08.02 조회 3

better-auth 1.6.11 이전 버전의 oidcProvider와 mcp 플러그인에 CVSS 4.0 기준 9.4(Critical) 등급의 암호화 기본값 취약점이 발견되었다. discovery 메타데이터가 none 알고리즘을 광고하고 PKCE plain을 기본값으로 허용하여, 신뢰할 수 없는 토큰 수용과 인가 코드 탈취가 가능하다.

위협 요약

항목 내용
CVE CVE-2026-67336
CVSS 4.0 9.4 Critical
CVSS 벡터 CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N
CWE CWE-327
영향 버전 better-auth < 1.6.11
수정 버전 1.6.11
영향 구성 요소 oidcProvider, mcp
GHSA GHSA-9h47-pqcx-hjr4

AC:H/AT:P는 "oidcProvider/mcp가 활성화된 특정 OIDC 설정"이라는 전제 조건이 필요함을 의미한다. @better-auth/oauth-provider는 영향 받지 않는다.

취약점 개요

oidcProvider와 mcp 플러그인은 discovery 메타데이터에 none 알고리즘을 포함하는 것과 PKCE plain을 기본값으로 허용하는 두 가지 결함이 있다.

첫째, discovery 문서의 id_token_signing_alg_values_supported에 none을 포함하면, 알고리즘 고정(pinning) 없이 discovery 문서에서 알고리즘을 선택하는 RP는 서명 없는 토큰을 수락할 수 있다.

둘째, PKCE plain이 기본값으로 활성화되어 있고, code_challenge_method가 누락된 요청은 plain으로 silently downgrade된다. discovery는 S256만 광고하므로 이는 RFC 9700 §2.1.1과도 배치된다.

mcp 플러그인은 oidcProvider를 내부적으로 사용하므로 두 결함을 모두 상속한다.

기술적 분석

metadata 빌더가 none 알고리즘을 무조건 추가하고, authorize 핸들러가 code_challenge_method 누락 시 plain으로 덮어쓰는 구조다. RP가 서명 알고리즘을 고정하지 않으면, 공격자가 none 알고리즘으로 토큰을 조작해 RP가 이를 유효한 것으로 처리할 수 있다.

PKCE plain의 경우, 인가 코드 전달에 해시 검증을 제공하지 않으므로 URL이 누출(Referer, 브라우저 히스토리, 프록시 로그)될 시 인가 코드를 가로챌 수 있다. RFC 9700(OAuth 2.1)은 plain을 명시적으로 금지하며 S256을 필수로 요구한다.

@mcp 플러그인은 agent-to-agent 통신에서 OIDC를 사용할 때 특히 위험하며, 신뢰망이 넓을수록 공격 표면이 증가한다.

@better-auth/oauth-provider는 두 결함이 없다. metadata 빌더가 none을 구조적으로 제외하고 authorize schema가 S256.literal로 plain을 파싱 시점부터 거부한다.

영향 범위

oidcProvider() 또는 mcp()를 활성화한 better-auth 인스턴스가 직접 영향 받는다. 영향 대상:

  • SSO 연동 시스템 — better-auth를 OIDC 제공자로 사용하는 RP들이 서명 없는 토큰을 수락할 수 있음. 신원 위조, 권한 승격, 세션 하이징 가능.
  • MCP 플러그인 사용 환경 — agent-to-agent 신뢰망에서 토큰 조작과 인가 코드 탈취 경로 존재.
  • OAuth 2.1 준수 필요 환경 — RFC 9700 비준수로 규정 준수 리스크 발생.
  • @better-auth/oauth-provider — 무영향.

대응 방안

즉시 (0~24시간)

  1. 업데이트 — better-auth 1.6.11 이상으로 업그레이드
  2. 워크어라운드 — oidcProvider({ allowPlainCodeChallengeMethod: false }) 적용 및 discovery metadata에서 none 알고리즘 제거
  3. 마이그레이션 — 가능하면 @better-auth/oauth-provider로 전환
  4. RP 검증 — RP가 서명 알고리즘을 고정하는지 확인

단기 (1주 이내)

  1. discovery endpoint의 알고리즘 목록과 PKCE 설정 검증
  2. OIDC 로그에서 none 토큰 수용, plain PKCE 사용 사례 탐지
  3. WAF/리버스 프록시에서 none 알고리즘 토큰 거부 규칙 적용

중기 (1개월 이내)

  1. oauth-provider로의 완전 마이그레이션
  2. OAuth 2.1(RFC 9700) 준수 검토
  3. 알고리즘 pinning 정책 도입 및 모니터링

참고문헌

  1. NVD — CVE-2026-67336
    https://nvd.nist.gov/vuln/detail/CVE-2026-67336

  2. GitHub Security Advisory — GHSA-9h47-pqcx-hjr4
    https://github.com/better-auth/better-auth/security/advisories/GHSA-9h47-pqcx-hjr4

  3. VulnCheck Advisory
    https://www.vulncheck.com/advisories/better-auth-before-insecure-cryptographic-defaults-via-oidcprovider

  4. GitHub Release v1.6.11
    https://github.com/better-auth/better-auth/releases/tag/v1.6.11

  5. Patch PR #9575
    https://github.com/better-auth/better-auth/pull/9575

  6. RFC 9700 (OAuth 2.1) §2.1.1 PKCE
    https://datatracker.ietf.org/doc/html/rfc9700#section-2.1.1

  7. CWE-327 — Use of a Broken or Risky Cryptographic Algorithm
    https://cwe.mitre.org/data/definitions/327.html


본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.

로그인

아직 댓글이 없습니다.

첫 번째 댓글을 작성해보세요!

IT 도구 서랍

→ Unix: 2025-01-15T09:30:00
→ 날짜: 1736934600

→ ASCII: ABC
→ 문자: 65 66 67

ASCII 코드표 — 클릭하면 입력란에 추가

DecHex약어설명
DecHex문자
DecHex문자

→ 유니코드: 홍길동
→ 문자: \ud64d\uae38\ub3d9