개요

sooperset mcp-atlassian의 파일 경로 검증에서 경로 순회(path traversal) 취약점이 보고됐다. VulDB CNA의 CVE-2026-124503 기록은 이 이슈가 0.24.0 이하 버전에 영향을 주고, src/mcp_atlassian/utils/io.py의 validate_safe_path 함수에서 path 인자 조작이 경로 순회로 이어진다고 적는다. 공격은 원격에서 시작될 수 있으며, 익스플로잇이 공개돼 사용될 수 있다고 함께 밝힌다. 수정은 0.24.1로 업그레이드하는 것으로 가능하다.
여기서 구분해서 봐야 할 두 축이 있다. 하나는 취약점 기록이 명시한 영향 버전과 검증 함수, 수정 버전이라는 확정 정보다. 다른 하나는 프로젝트 보안 권고 GHSA-qh7q-jmc7-rc7j가 설명하는, 검증 경계가 무너지는 특정 환경이다. 후자는 조건이 갖춰진 배치에 대한 설명이므로 전체 설치 대상에 대한 일반 진단이 아니라 내 환경이 그 조건에 해당하는지를 가려내는 용도로 쓰는 편이 근거의 범위에 맞는다. 두 자료가 어떤 관계인지는 제공된 근거에서는 확인되지 않는다.
영향 범위
버전 범위는 분명하다. 취약점 기록상 mcp-atlassian 0.24.0 이하가 영향을 받고, 기록은 0.24.1로의 업그레이드가 이 문제를 해결할 수 있다고 밝힌다.
프로젝트 권고의 구체적 사례는 다음 두 조건이 동시에 성립하는 환경을 다룬다. 첫째, 인증된 원격 MCP 호출자가 첨부파일 업로드 기능을 호출할 수 있어야 한다. 둘째, 서버 프로세스의 현재 작업 디렉터리(CWD)가 루트(/)여서 검증 경계가 실효성을 잃어야 한다. 권고는 이 조건에서 인증된 원격 MCP 호출자가 confluence_upload_attachment를 호출하며 file_path에 서버 프로세스가 읽을 수 있는 파일을 지정할 수 있다고 설명한다.
서버 프로세스의 파일 읽기 권한과 업로드 기능에 도달 가능한 인증 주체의 범위는, 위 조건이 갖춰진 배치에서 얼마나 넓은 범위의 파일이 대상이 될 수 있는지를 좌우하는 변수로 보는 편이 근거의 범위와 맞는다. 같은 버전이라도 프로세스가 읽을 수 있는 위치가 좁고 업로드 도구를 호출할 수 있는 호출자가 제한적이라면, 그 사례가 말할 수 있는 실질적 노출은 작아진다.
0.24.1 릴리스 설명은 파일을 읽거나 쓰는 도구의 디렉터리 처리 변경이 sse와 streamable-http에 적용된다고 밝히고, stdio는 변경되지 않았다고 명시한다. 운영 중인 트랜스포트가 어느 쪽인지 구분해 두는 일은, 릴리스의 이 설명을 확인하는 기준점으로 삼으면 된다.
기술적 분석
취약점 기록이 지목한 지점은 validate_safe_path다. 제공된 하드링 PR #1448의 설명을 보면 이 함수는 파일이 열리기 전에 업로드 대상을 작업 디렉터리 안으로 묶는 역할을 하며, Jira와 Confluence의 upload_attachment 경로가 모두 이 지점을 거친다. upload_attachments와 update_issue의 attachments 파라미터도 같은 검증 지점으로 라우팅된다. PR은 나열된 경로들이 동일한 검증 지점을 지난다고 설명할 뿐, 그 지점 하나가 우회될 때 각 도구 경로에 어떤 결과가 미치는지까지는 서술하지 않는다.
권고가 설명하는 경계 우회는 검증이 상대 경로의 허용 여부를 프로세스의 CWD 기준으로 판단한다는 점에서 시작한다. CWD가 /이면 호스트의 모든 절대 경로가 is_relative_to(cwd)를 만족해 검사 자체를 통과한다. 권고의 사례에서 통과를 결정하는 것은 입력 값의 특별한 처리가 아니라 CWD의 위치다. 다만 이 설명은 권고가 다룬 CWD 사례에 한정되며, 취약점 기록이 지목한 경로 순회 전체의 메커니즘을 이 조건 하나로 환원할 수는 없다.
프로젝트 권고의 사례에서 영향은, 인증된 원격 MCP 호출자가 서버 프로세스가 읽을 수 있는 파일을 confluence_upload_attachment의 file_path로 지정할 수 있다는 형태로 서술된다. 취약점 기록은 path 인자 조작이 경로 순회로 이어진다고만 적을 뿐, 영향이 읽기인지 쓰기인지를 구분해 설명하지 않는다. 호출자가 업로드한 첨부파일을 다시 열람할 수 있다면 서버 파일이 첨부 경로를 따라 외부로 옮겨질 수 있다는 해석은 따라 나올 수 있지만, 이는 전달된 근거로 입증된 결과가 아니라 위 사실에서 조건부로 도출된 해석으로 봐야 한다. 확인된 것은 경로 지정과 경계 통과까지이고, 이후 노출 범위는 서버 프로세스의 읽기 권한과 첨부파일 접근 경로 설계에 달려 있다.
악용 상태는 두 문장으로 나눠 읽어야 한다. 취약점 기록은 익스플로잇이 공개돼 사용될 수 있다고 밝히지만, 제공된 자료에는 실제 악용 사례나 구체적인 침해 지표가 없다. 공개 여부에 관한 진술은 CVE 기록의 기술에 머물고, 전달된 자료 안에는 그 익스플로잇의 실행형 코드를 독립적으로 확인한 근거도, 실제 환경에서 악용됐음을 보여 주는 사례도 없다. 따라서 지금 확인할 수 있는 범위는 기록상 공개 익스플로잇에 대한 언급까지이고, 실제 노출 판단은 앞서 살펴본 버전과 CWD, 업로드 접근 조건을 직접 확인해서 내려야 한다.
대응 방안
점검은 조건 성립 여부 확인부터 시작하는 편이 효율적이다. 우선 사용 중인 mcp-atlassian 버전이 0.24.0 이하인지 확인한다. 이후 아래 항목을 살펴본다.
- 서버 프로세스의 현재 작업 디렉터리가 루트인지 확인한다. 이는 권고가 설명한 특정 사례의 조건을 확인하는 점검이며, 취약점 전체의 노출 상태를 이 항목 하나로 판정하는 절차는 아니다.
- 그 프로세스가 읽을 수 있는 파일의 범위를 본다. 자격증명, 토큰, 설정 파일, 사용자 데이터 중 업로드로 지정될 수 있는 위치가 얼마나 되는지는 조건이 성립한 배치에서의 노출에 영향을 줄 수 있다.
- 첨부파일 업로드 기능을 호출할 수 있는 원격 MCP 호출자의 범위를 확인한다. 권고가 제시한 사례에서 공격자 위치는 인증된 원격 MCP 호출자이며, 이 점검은 그 전제가 우리 환경에 해당하는지를 보는 절차다.
- 운영 트랜스포트가 sse·streamable-http인지 stdio인지 확인해 둔다. 0.24.1 릴리스에 명시된 파일 디렉터리 변경은 sse와 streamable-http에 적용되고 stdio는 변경되지 않았다.
근본 조치는 수정 버전인 0.24.1 이상으로의 업그레이드 검토다. 다만 업그레이드는 버전 번호 문제로 끝나지 않는다. 0.24.1 릴리스 설명은 이 버전의 sse와 streamable-http에서 파일을 읽거나 쓰는 도구가 MCP_ATLASSIAN_FILES_DIR으로 지정한 디렉터리를 쓰고, 미설정이면 ~/.mcp-atlassian/files를 사용하며, 작업 디렉터리는 더 이상 쓰지 않는다고 밝힌다. 같은 설명에서 설정한 디렉터리가 루트나 홈 디렉터리이면 서버는 시작을 거부한다. 릴리스가 밝힌 이 기동 조건을 기준으로, 업그레이드 전에 파일 입출력 경로 설정을 미리 점검해 두는 편이 안전하다.
탐지는 근거의 범위가 좁다. 인증된 원격 호출자의 첨부파일 업로드 요청과 지정된 파일 경로를 확인할 수 있다면, 예상하지 못한 서버 파일을 대상으로 한 요청을 조사해 볼 수 있다. 이는 확인된 공격 경로에서 도출한 점검 제안일 뿐이며, 특정 로그 필드의 존재나 탐지 규칙의 성능은 제공된 근거에서 확인되지 않았다. 관련 로그를 이미 수집하고 있다면 대조해 보고, 그렇지 않다면 이 항목을 즉시 실행 가능한 탐지 지침으로 취급하지 않는 편이 안전하다.
아직 확인되지 않은 부분
취약점 기록이 지목한 validate_safe_path의 경로 순회와, 프로젝트 권고가 설명하는 CWD 경계 우회가 정확히 어떤 관계인지는 추가 확인이 필요하다. CWD 사례를 이 취약점의 유일한 원인이나 모든 배치에 적용되는 공격 경로로 일반화하면 안 된다. 가능한 다른 공격 경로 역시 제공된 자료만으로는 판단할 수 없다. 공개 익스플로잇 역시 기록상 언급은 확인되지만 실행형 코드와 실제 악용 여부는 전달된 근거로 확인되지 않는다. 임시 완화책과 롤백 절차, 구체적인 침해 지표도 근거에 없다. 이 영역은 벤더 확인과 후속 연구 자료가 확인되기 전까지 한계로 두고, 버전 확인과 CWD 및 접근 범위 점검이라는 확인된 사실 기반 조치에 집중하는 편이 합리적이다.
참고자료
- CVE-2026-124503: sooperset mcp-atlassian io.py validate_safe_path path traversal
- GHSA-qh7q-jmc7-rc7j: upload guard boundary is the process CWD
- Release v0.24.1
- Security hardening across attachment, transport, SSRF, authorization, filter, and OAuth layers
함께 읽으면 좋은 글
- CVE-2026-120515: SEOPress AI SEO 플러그인의 저장형 XSS 점검
- CVE-2026-119167: TranslatePress AI Translation 플러그인의 저장형 XSS 점검
- CVE-2026-123493: Vikunja, 소유자를 비활성화해도 봇 API 토큰이 계속 인증되는 이유
본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!