CVE-2026-77002 (WordPress SmilePass Selfie Login 인증 우회) 분석

분류: CVE · 웹·서버 · 인증우회(Auth Bypass) · CVE-2026-77002 · [표준]

셀카(셀피) 사진으로 로그인하게 해 주는 워드프레스 플러그인 하나가 “무인증 인증 우회” 결함으로 공개됐습니다. 이 플러그인은 자기가 로그인시켜 달라고 요청받은 신원이 진짜인지 서버에서 전혀 확인하지 않아서, 아무 권한 없는 공격자가 관리자를 포함한 어떤 등록 계정으로든 로그인할 수 있습니다. 로그인의 겉모습(얼굴 인식)은 화려한데, 그 얼굴이 실제로 통과했는지 확인하는 문지기가 빠진 사례입니다.

개요

CVE-2026-77002는 “SmilePass Selfie Login” 워드프레스 플러그인의 버전 1.0.2까지(through 1.0.2)에 영향을 주는 무인증 인증 우회(Authentication Bypass) 취약점입니다. 공개된 설명에 따르면, 이 플러그인은 인증하라고 요청받은 신원에 대해 어떤 서버 측 검증도 수행하지 않으며(does not perform any server-side verification of the identity), 그 결과 무인증 공격자가 관리자를 포함한 임의의 등록 계정으로 로그인할 수 있습니다.

  • 영향 제품: SmilePass Selfie Login (워드프레스 플러그인)
  • 영향 버전: 1.0.2 이하(through 1.0.2)
  • 취약점 클래스: 무인증 인증 우회 — 인증 대상 신원에 대한 서버 측 검증 부재
  • 관리자 탈취 여부: 공개 설명이 “관리자 포함(including administrators)“을 명시 — 확정 사실.
  • CVSS 3.1: 9.8(CRITICAL), 벡터 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — MITRE CVEAWG·WPScan 둘 다 확정.
  • CWE: CWE-287(부적절한 인증) — 확정.
  • 패치 상태: 무패치(No known fix available) — 확정. fixed 버전 없음.

분석 배지. 이 결함은 같은 시기 공개된 다른 워드프레스 로그인 플러그인들의 인증 우회 결함과 한 계열로 읽힙니다(아래 논평 참고). 발견자는 Khaled Alenazi(Nxploited), advisory 공개는 2026-08-20(WPScan), CVE 레코드 등재는 2026-08-22입니다 — MITRE CVEAWG API·WPScan advisory 1차출처로 확증.

기술 배경 (30초)

“셀피 로그인”은 방문자가 비밀번호 대신 얼굴 사진을 찍어 사이트에 들어오게 해 주는 편의 기능입니다. 개념적으로 제대로 된 흐름은 이렇습니다.

  1. 사용자가 카메라로 얼굴을 촬영한다.
  2. 얼굴 인식 처리부가 그 얼굴이 등록된 어떤 계정과 일치하는지를 판정한다(생체 대조).
  3. 서버가 그 판정 결과를 자기 손으로 다시 확인한 뒤, 일치가 확실할 때만 해당 계정의 세션을 발급한다.

핵심은 3번입니다. 얼굴 대조가 클라이언트(브라우저)나 외부 판정기에서 이뤄지더라도, “이 신원으로 로그인시켜 달라”는 최종 요청이 정말로 정당한 대조를 거쳤는지 서버가 스스로 검증해야 합니다. 이 검증이 없으면, 얼굴을 실제로 대조했다는 “주장”만 넘겨도 서버가 그대로 믿어 버립니다. 여기에 더해 워드프레스에는 요청이 정상 화면에서 왔는지 보는 논스(nonce, 요청 위조 방지 일회용 토큰), 그 요청 주체에게 자격이 있는지 보는 권한(capability) 검사가 있습니다. CVE-2026-77002의 핵심은 인증하라고 요청받은 신원 자체를 서버가 검증하지 않았다는 것입니다.

CVE 분석 요약

공개된 설명을 근거로 정리하면, 문제는 로그인 처리부가 “이 신원으로 인증해 달라”는 바깥 요청을 신원 검증 없이 그대로 받아들인다는 데 있습니다.

  • 신원 검증 없음(핵심): 요청이 지목한 계정이 실제로 정당한 얼굴 대조를 통과했는지 서버가 확인하지 않습니다. “이 얼굴은 이 계정으로 인증됐다”는 주장을 서버가 그냥 수용합니다.
  • 대상 계정을 공격자가 좌우 가능: 서버 측 신원 검증이 없으므로, 공격자가 인증 대상으로 원하는 계정(관리자 포함)을 지목할 수 있습니다. 공개 설명이 확정하는 범위는 여기까지이며, 대상 계정 지정에 쓰이는 정확한 파라미터명은 advisory에 코드 레벨로 공개되어 있지 않습니다.

서버가 넘어온 신원 주장을 곧이곧대로 신뢰하기 때문에, 처리부는 지목된 계정의 세션을 만들어 냅니다. 공개 설명은 무인증 공격자가 이렇게 관리자를 포함한 임의 등록 계정으로 로그인한다고 밝힙니다.

공통 골격을 개념 코드로 단순화하면 다음과 같습니다.

// 개념용 단순화 — 실제 소스/페이로드 아님
function selfie_login_handler(request):
    claimed_user = request[...]        // "이 계정으로 인증됐다"는 바깥 주장
    // (빠진 문지기) 신원 검증: 이 계정이 정당한 얼굴 대조를 통과했는지 서버가 확인 X
    // (빠진 문지기) 논스/권한: 정상 흐름·자격 확인 X
    user = resolve_user(claimed_user)
    set_session(user)                  // 관리자여도 그대로 세션 발급

개념용 단순화 — 실제 페이로드/원본 코드 아님. 실제 함수명·파일명·라인은 확인하지 않았습니다(⚠️미확인).

빠진 것은 정교한 방어가 아니라 “넘어온 신원이 실제로 대조를 통과했는지 서버가 다시 확인한다”는 한 줄입니다. 생체 인식이라는 화려한 겉면 뒤에서, 인증의 최종 판정을 서버가 자기 손으로 쥐지 않고 바깥 주장에 넘긴 형태입니다.

공격 시나리오 · 영향도 + 대응방안

시나리오(개념). ① 무인증 공격자가 셀피 로그인 처리부에, 인증 대상으로 특정 계정(예: 관리자)을 지목하는 요청을 보냅니다. → ② 처리부가 그 신원이 정당한 얼굴 대조를 통과했는지 확인하지 않은 채 요청을 수용합니다. → ③ 서버가 지목된 계정의 세션을 발급합니다. → ④ 공격자가 그 계정(관리자 포함)의 세션을 획득합니다. 실제 얼굴 사진이나 생체 데이터 없이도 도달하는 구조입니다. (작동하는 요청·페이로드는 싣지 않습니다.)

영향도. 공개 설명이 밝힌 확정 범위는 무인증 상태에서 관리자를 포함한 임의 등록 계정으로 로그인입니다. 관리자 세션이 넘어갈 경우 워드프레스 특성상 플러그인/테마 편집을 통한 코드 실행, 콘텐츠 위·변조, 전체 사용자 데이터 접근으로 이어질 수 있습니다(합리적으로 예상되는 후속 영향 — 분석 추정). 노출 전제는 “이 플러그인을 취약 버전(≤1.0.2)으로 설치·활성화”입니다.

대응방안.

  1. 근본 — 즉시 비활성화 또는 제거. 공개 시점 기준 공식 패치가 존재하지 않습니다(No known fix, 확정). “안전 버전으로 업데이트”는 현시점 가능한 처방이 아니며, 취약 버전을 쓰는 사이트는 해당 플러그인을 비활성화(가능하면 완전 제거) 하는 것이 유일한 근본 대응입니다. 셀피 로그인은 편의 기능이라 꺼도 서비스 본체와 표준 로그인은 유지됩니다.
  2. 완화(업데이트·제거가 당장 어려울 때). 셀피 로그인 처리 엔드포인트로의 접근을 웹 방화벽/서버 규칙으로 제한하고, 관리자 계정에 2단계 인증을 걸어 세션 발급만으로 실권을 못 쥐게 방어 심도를 더합니다. 다만 임시 완화일 뿐, 근본 대응을 대체하지 않습니다.
  3. 탐지 관점. 셀피 로그인 엔드포인트로 들어온 요청 중 정상 촬영·대조 흐름을 거치지 않은 직접 호출, 그리고 예상치 못한 신규 로그인 세션(특히 관리자 계정) 을 로그에서 살핍니다. 짧은 시간에 반복되는 처리부 직접 호출도 신호입니다.
  4. 패치 감시. 현재 무패치이므로, 벤더 페이지·wordpress.org 플러그인 페이지·WPScan advisory에서 fixed 버전 출시 여부를 계속 확인해 나오는 즉시 적용합니다.

논평 — 왜 이 실수가 반복되나

이 결함은 “인증을 편의 기능으로 취급할 때 생기는 전형적인 사고”입니다. 소셜 로그인이든 셀피(생체) 로그인이든, 겉으로는 로그인 UX를 붙이는 일처럼 보이지만 속은 신뢰 경계를 넘어온 신원 주장을 서버가 검증하는 보안 작업입니다. 대조를 브라우저나 외부 판정기가 하더라도, “그 대조가 정말 통과했는가”의 최종 판정은 서버가 자기 손으로 쥐어야 합니다. CVE-2026-77002는 그 최종 판정을 통째로 바깥 주장에 맡긴 극단입니다.

생체 인식은 특히 이 함정에 빠지기 쉽습니다. “얼굴은 위조하기 어렵다”는 직관이, 정작 위조해야 하는 대상이 얼굴이 아니라 ‘얼굴이 통과했다는 서버로 가는 요청’이라는 사실을 가립니다. 이는 소셜 로그인 플러그인이 IdP(외부 신원 서버) 토큰을 검증하지 않은 것, 요청 위조(CSRF) 방어를 빼먹는 것, 파서 불일치로 인증을 우회하는 것과 같은 뿌리 — 서버가 바깥의 주장을 자기 손으로 다시 확인하지 않은 것 — 에서 자랍니다. 우리 랩이 앞서 다룬 워드프레스 소셜 로그인 인증 우회 사례들과 나란히 놓으면, 인증의 UX만 바뀌었을 뿐 빠진 문지기는 동일합니다.

결론

한 줄 요약. 생체 로그인은 “얼굴로 인증한다”는 기능이지만, 그 얼굴이 통과했다는 판정이 진짜인지 확인하는 책임까지 바깥에 넘길 수는 없습니다. CVE-2026-77002는 인증하라고 요청받은 신원을 서버가 전혀 검증하지 않아, 무인증 공격자가 관리자까지 사칭하게 된 사례입니다.

이 한 틈은 고쳐지겠지만, 똑같은 사고방식은 다음 생체 로그인·패스키·SSO 연동에서 또 나타납니다 — 그래서 우리는 개별 CVE가 아니라 “바깥의 신원 주장을 서버가 검증했는가”라는 방법을 남깁니다.

관련: 같은 계열의 워드프레스 소셜 로그인 인증 우회 → infiltr8 Lab, “‘로그인했다고 하니까 믿었습니다’ — 소셜 로그인 플러그인의 같은 구멍”.

References / 참고자료

  1. NVD — CVE-2026-77002 (이 글이 재구성한 1차출처 메타). 영향 제품·버전·취약점 설명 근거. https://nvd.nist.gov/vuln/detail/CVE-2026-77002
    • 공개 설명 요지: “SmilePass Selfie Login” 플러그인 1.0.2 이하가 인증 대상 신원에 대해 서버 측 검증을 전혀 수행하지 않아, 무인증 공격자가 관리자를 포함한 임의 등록 계정으로 로그인 가능.
  2. WPScan(Automattic) advisory — 발견자 Khaled Alenazi(Nxploited), 공개일 2026-08-20, CVSS 3.1 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H), CWE-287, 패치 상태 No known fix. https://wpscan.com/vulnerability/51236907-a1b4-4c3b-8c39-adafcab7a2ef/
  3. infiltr8 Lab, “‘로그인했다고 하니까 믿었습니다’ — 소셜 로그인 플러그인의 같은 구멍” (워드프레스 인증 우회 계열) — 같은 뿌리의 인증 우회를 다룬 우리 글.

이 글은 위 1차출처(MITRE CVE 레코드·WPScan advisory)를 우리 관점에서 다시 쓰고 논평을 더한 것입니다. 특정 문장·코드를 그대로 옮기지 않았으며, 작동하는 익스플로잇/페이로드는 싣지 않았습니다. 코드 예시는 개념 설명용입니다. 이 초안은 RN-11 독립 팩트체크(MITRE CVEAWG API + WPScan advisory 직접 대조, 2026-08-31)를 통과했습니다.