ProjectSend API 토큰 권한 검증 결함: 제한된 토큰의 계정 승격 위험

ProjectSend에서 권한이 제한된 API 토큰을 쓰더라도, 특정 검증 결함으로 자격 증명을 재설정하면 완전한 권한을 가진 대화형 계정으로 승격될 위험이 있습니다. API 토큰에 설정된 개별 권한 제한이 자격 증명 관리 경로에서는 무력화된다는 뜻입니다.

ProjectSend API 토큰 계정 승격 취약점(GHSA-j5cp-r8pr-m5cr) 분석

ProjectSend는 최근 GitHub에 보안 권고 GHSA-j5cp-r8pr-m5cr를 공개했습니다. 이 권고의 핵심은 제한된 API 토큰(Restricted API tokens)이 시스템의 자격 증명을 재설정해 결국 완전한 대화형 계정(Full interactive accounts)으로 전환될 수 있다는 점입니다.

API 토큰은 원래 특정 기능만 수행하도록 권한(abilities)을 제한해 발급됩니다. 그런데 이번에 발견된 권한 검증 결함은 이 제한 설정이 자격 증명 재설정 프로세스에서 제대로 작동하지 않아, 공격자가 낮은 권한의 토큰으로도 계정의 전체 제어권을 획득하는 길을 열어 줍니다.

취약점 메커니즘: 제한된 토큰에서 대화형 계정으로의 전환

이 취약점은 API 토큰의 권한 체계와 계정 인증 정보 관리 사이의 검증 공백을 노립니다. 시스템 관리자가 특정 목적으로 제한된 권한만 부여한 스태프 API 토큰을 발급했더라도, 그 토큰이 자격 증명 재설정 기능을 호출할 때 권한 검증이 누락되거나 부적절하게 처리되는 구조적 결함이 있습니다.

위험한 과정을 단계별로 짚어 보면 다음과 같습니다.

  1. 제한된 토큰 보유: 공격자 또는 권한이 낮은 사용자가 특정 권한(예: edit_clients)만 부여된 API 토큰을 확보합니다.
  2. 권한 경계 확인: 정상 상태에서는 해당 토큰으로 접근 불가능한 영역(예: 기밀 고객 파일 다운로드) 요청이 거부되는 것을 확인합니다.
  3. 자격 증명 재설정 시도: 토큰 권한이 제한되어 있어도 자격 증명 재설정 경로로 계정 정보를 변경하거나 재설정합니다.
  4. 계정 승격 완료: 재설정된 자격 증명으로 대화형 계정에 로그인하면, API 토큰의 제한을 완전히 벗어난 모든 관리 권한을 얻게 됩니다.

운영 환경 영향 및 권한 경계 무력화 위험

이 결함이 적용되는 구체적인 환경과 그로 인한 보안 영향은 다음과 같습니다.

대상 환경 및 조건

이 취약점은 ProjectSend의 스태프 API 토큰 기능을 사용하는 환경, 특히 권한(abilities)이 제한된 스태프 API 토큰이 발급되어 운영 중인 곳에서 발생합니다.

권한 무력화의 실제 사례

로컬 테스트 결과에 따르면, edit_clients 권한만 가진 토큰이 기밀 고객 파일을 직접 받으려고 했을 때는 요청이 거부되었습니다. 겉으로는 권한 제한 기능이 정상 작동하는 듯 보이지만, 실제로는 자격 증명 재설정이라는 우회 경로로 전체 계정 권한을 획득해 기밀 파일 접근을 포함한 모든 제한을 무력화할 수 있다는 뜻입니다.

다음 표는 일반적인 API 권한 제어와 이 취약점이 발생했을 때의 권한 변화를 비교한 것입니다.

구분 정상적인 제한된 토큰 상태 취약점 이용 후 승격 상태
접근 권한 발급 시 지정된 특정 abilities로 제한 완전한 대화형 계정 권한 획득
기밀 파일 접근 권한 외 파일 요청 시 거부됨 계정 승격 후 모든 파일 접근 가능
인증 방식 API 토큰 기반 인증 재설정된 자격 증명으로 대화형 로그인

대응 방안 및 점검 가이드

현재 ProjectSend 2.7.0 릴리스가 공개된 상태입니다. 다만 이 버전이 이번 권한 검증 결함에 대한 수정을 공식적으로 포함했는지는 릴리스 노트 원문에서 다시 확인해 봐야 합니다.

시스템 관리자와 보안 담당자가 검토할 조치는 다음과 같습니다.

  1. 보안 권고 확인: GitHub에 공개된 GHSA-j5cp-r8pr-m5cr 권고 내용을 상세히 검토해 자사 환경의 노출 여부를 판단하십시오.
  2. API 토큰 권한 재검토: 현재 발급된 스태프 API 토큰 가운데 권한이 제한된 토큰이 있는지 전수 조사하고, 불필요한 토큰은 즉시 폐기하십시오.
  3. 버전 업데이트 검토: ProjectSend 2.7.0 이상의 최신 버전으로 업데이트를 고려하되, 공식 릴리스 노트에서 이 취약점의 수정 여부를 명확히 확인한 뒤 적용하시기 바랍니다.
  4. 로그 분석: 자격 증명 재설정과 관련된 비정상적인 API 호출 기록이 있는지 점검해, 계정 승격 시도가 있었는지 분석하십시오.

이 결함은 API 토큰의 ‘제한’이라는 보안 설정이 실제로는 완전한 계정 탈취로 이어지는 심각한 경로를 제공합니다. 권한 설정 하나만 믿기보다 근본적인 패치 적용과 철저한 권한 관리가 필요합니다.

댓글 남기기