도구 호출이 실패했을 때 돌아오는 오류 문구는 개발자에게는 디버깅 단서지만, 서비스에게는 통제되지 않은 출력 채널입니다. CVE-2026-119613은 ash_ai의 영향 버전이 이 채널로 내부 구현 정보와 오류에 담긴 값을 흘려보낸다는 취약점입니다.
개요

Ash Project의 보안 권고에 따르면, ash_ai 1.5.0에서는 도구의 액션이 예외를 발생시키거나 처리되지 않은 오류 값을 반환하거나 결과를 JSON으로 인코딩할 수 없을 때 오류의 원문이 호출자에게 그대로 전달되고, 로그에는 아무것도 남지 않습니다. 여기서 호출자는 MCP 클라이언트이거나 AshAi.ToolLoop 안에서 도구를 돌려받는 LLM입니다 (GHSA-vhmw-fwrr-r6c6 권고).
예외가 발생한 경우 전달되는 원문은 Exception.format/2의 전체 출력입니다. 여기에는 내부 모듈과 함수 이름이 적히고, 많은 예외 유형에서는 코드가 실패한 값까지 포함됩니다. 즉 이 취약점으로 새어 나갈 수 있는 것은 내부 구현의 구조, 그리고 예외 유형과 실패한 코드에 따라 달라지는 실행 중 값입니다.
CVE 레코드는 Erlang Ecosystem Foundation이 CNA로서 등재했으며, 영향 범위는 ash_ai 1.5.0 이상 1.5.1 미만으로 적혀 있습니다 (CVE-2026-119613). 전달된 인용은 이 노출 동작과 영향 범위를 중심으로 정리되어 있어, 영향 범위에서 제외되는 버전에서 무엇이 바뀌었는지와 구체적인 배포 절차는 이 자료의 범위에서는 확인되지 않습니다.
영향 범위
점검은 버전 조건과 접근 조건이 겹치는지를 보는 일입니다.
- ash_ai 1.5.0 이상 1.5.1 미만을 사용 중인 경우 (영향 범위 레코드)
- 도구 호출 권한이 있는 호출자가 예기치 않거나 잘못된 인자를 보내 도구 실패를 유발할 수 있는 경우
- 그 호출자가 오류 응답의 원문을 그대로 받을 수 있는 경우. 권고문이 지목한 경로는 MCP 클라이언트와 AshAi.ToolLoop의 LLM입니다
CVE 설명은 시나리오를 도구 접근 권한이 있는 호출자의 행동으로 구체적으로 서술합니다. 즉 이 취약점은 접근 통제 밖의 무차별 노출이라기보다, 이미 도구 호출이 허용된 주체가 오류 응답을 정보 수집에 쓸 수 있는 구조에 가깝습니다 (CVE 레코드 JSON). 따라서 실질적인 영향은 도구를 누가 호출할 수 있고, 그 오류 응답을 실제로 받는가에 달려 있습니다. 오류 원문이 어디까지 도달하는지는 위 경로가 배포 환경에서 어떻게 구성되어 있는지에 따라 달라지므로, 노출 범위는 그 구성을 확인하기 전까지 단정할 수 없습니다.
영향 범위가 1.5.0부터 시작한다고 적혀 있지만, 그 이전 버전의 동작이나 1.5.0 미만 계통의 위험 여부는 제공된 근거에 없습니다. 또 오류에 어떤 값이 포함되는지는 예외 유형과 실패한 코드에 따라 달라지므로, 특정 값이 노출된다고 단정하기는 어렵습니다.
기술적 분석
오류가 응답으로 나가는 경로
근거가 나열하는 트리거는 예외 발생, 처리되지 않은 오류 값의 반환, 결과를 JSON으로 인코딩할 수 없는 경우입니다. 권고문은 이러한 경우에 오류의 원문이 도구의 호출자에게 전달되고 로그에는 아무것도 남지 않는다고 적습니다 (GHSA-vhmw-fwrr-r6c6 권고). 예외 발생 시 전달되는 원문이 Exception.format/2의 전체 출력이라는 점은 인용이 명시적으로 서술한 부분이며, 나머지 경로에서 원문이 무엇으로 되는지를 덧붙인 설명은 전달된 인용에 없습니다.
노출되는 정보와 그 의미
Exception.format/2 출력은 내부 모듈과 함수 이름을 드러냅니다. 여기에 예외 유형에 따라 코드가 실패한 값이 더해지면, 호출자는 오류 응답 하나에서 구현의 구조와 실패한 지점의 값을 함께 보게 됩니다. CVE 레코드가 기술하는 절차도 이 지점을 말합니다. 도구 접근 권한이 있는 호출자가 예기치 않거나 잘못된 인자를 보내 도구를 실패시키고, 반환된 오류 문구를 읽어 내부 모듈과 함수 이름과 코드가 실패한 값을 알아낸다는 것입니다 (CVE 레코드 JSON).
운영 언어로 옮기면, 오류 응답이 내부 구현을 묻는 질문지에 답하는 채널이 되는 구조입니다. 확인된 노출 범위는 내부 모듈과 함수 이름, 그리고 예외 유형에 따라 응답에 실릴 수 있는 값까지입니다. 그 정보가 어디까지 이어지는지, 어떤 추가 동작으로 이어질 수 있는지는 제공된 근거에 없으므로, 구조적인 정보 노출 가능성과 실제 침해 결과를 동일시하지는 말아야 합니다.
로그에 남지 않는 구간이 뜻하는 것
권고문은 이 오류 경로가 로그를 남기지 않는다고 명시합니다. 그래서 오류 로그가 비어 있다는 사실은 악용이 없었다는 증거가 되지 않습니다. 기록의 부재가 확인을 대체하지 못하는 자리에서 남는 것은 수단의 문제입니다. 검증된 탐지 규칙은 전달된 근거에서 확인되지 않으므로, 그대로 적용할 수 있는 경고문이나 탐지 로직 하나에 기대 안심할 수도 없습니다. 점검의 출발점은 도구 호출과 오류 응답을 지금 모니터링할 수 있는가라는 질문 자체이고, 그 답을 확인하는 절차는 아래 대응 방안의 사후 확인에서 다룹니다.
확인되지 않은 부분
- 실제 환경에서의 악용 여부는 제공된 근거만으로 확인되지 않았습니다. 이는 존재하지 않는다는 뜻은 아닙니다.
- 영향 범위에서 제외되는 버전의 변경 내용과 구체적인 배포 절차는 전달된 인용의 범위에서는 확인되지 않습니다. 확인 가능한 범위는 사용한 인용까지이므로, 원문 권고에 다른 안내가 담겨 있는지는 이 글로 확인할 수 없습니다.
- 위험도 점수는 전달된 근거에 없어 지표로 비교할 수는 없습니다.
대응 방안
먼저 확인할 것
- 사용 중인 ash_ai 버전이 1.5.0 이상 1.5.1 미만 구간에 해당하는지 확인합니다.
- 도구를 호출할 수 있는 주체가 누구인지, 그들의 응답 경로에 오류 원문이 그대로 도달하는지 접근 범위를 정리합니다.
- 영향 버전을 사용하고 오류 응답이 호출자에게 도달한다면, 그 경로를 우선 점검 대상으로 둡니다.
갱신 검토
CNA 기준 영향 범위는 ash_ai 1.5.0 이상 1.5.1 미만입니다. 제공된 분석이 제시하는 방향은 이 범위에서 제외되는 버전으로의 갱신을 검토하는 것이며, 범위 밖이라는 사실만으로 특정 버전이 수정되었거나 안전하다고 이 글은 말하지 않습니다. 실제로 그 버전에서 무엇이 바뀌었는지도 확인되지 않습니다. 전달된 인용에는 수정 내용과 개별 패치 절차가 나타나지 않으므로, 갱신을 검토한다면 변경 이력과 의존 관계를 직접 확인해 호환성을 검증하고, ash_ai가 연결된 도구 액션의 동작을 점검한 뒤 적용하는 편이 안전합니다.
사후 확인
도구 호출과 오류 응답을 현재 모니터링할 수 있는지부터 살핍니다. 이미 남아 있는 도구 호출 및 응답 기록이 있고 그 범위가 충분하다면, 실제 노출된 값과 악용 여부를 살펴보는 데 참고가 될 수 있습니다. 다만 기록만으로 피해를 단정하거나 배제할 수는 없습니다.
대응 순서
버전 확인과 접근 범위 확인을 갱신보다 앞에 두는 이유는, 노출이 도구 호출 권한과 오류 응답 도달이라는 조건에 걸려 있어 그 조건 자체가 오늘 확인할 수 있는 점검 항목이기 때문입니다. 반면 갱신은 수정 내용과 배포 절차가 확인되지 않은 만큼 적용에 앞서 검증이 필요합니다. 그 검증이 끝날 때까지 도구 호출 접근 조건을 확인 가능한 범위로 유지하는 방향을 검토할 수 있지만, 이는 근거가 명시한 접근 조건에서 뽑아낸 해석입니다.
참고자료
- Information disclosure in AshAi.ToToolError in AshAi sends raw exception text to tool callers
- CVE-2026-119613
- CVE-2026-119613
함께 읽으면 좋은 글
- CVE-2026-125397: NocoBase plugin-ai AI 직원 권한 우회 취약점 분석
- CVE-2026-112137: Mendix Studio Pro MCP Server의 CSRF 취약점 점검
- CVE-2026-124503: mcp-atlassian 경로 순회 취약점과 경로 검증 경계의 한계
본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!