Network-AI의 A2AServer에서 인증 누락(missing authentication) 취약점 CVE-2026-120314가 보고되었습니다. CVE 레코드와 GitHub 보안 어드바이저리는 나란히, 시크릿(secret)이 구성되지 않은 상태에서 인증되지 않은 공격자가 작업(task) 연산에 접근할 수 있다고 기재합니다. 이 글에서는 확인되는 사실과 아직 확인되지 않은 지점을 나누고, 그 경계가 점검 범위와 대응 순서에 어떤 의미를 주는지 살펴봅니다.
개요

CVE 프로젝트와 VulnCheck CNA가 공개한 CVE 레코드는 "Network-AI from 5.14.0 before 5.15.5 contains a missing authentication vulnerability in the A2AServer class that allows unauthenticated attackers to access task operations when no secret is configured"라고 기재합니다. Network-AI 5.14.0 이상 5.15.5 미만의 A2AServer 클래스에 인증 누락이 있고, 시크릿이 구성되지 않았을 때 인증되지 않은 공격자가 작업 연산에 접근할 수 있다는 설명입니다. (CVE-2026-120314 레코드)
GitHub 보안 어드바이저리 GHSA-qvf5-9prv-7r9c의 제목은 "A2AServer accepts all task operations unauthenticated when no secret is configured"입니다. 같은 조건에서 이번에는 모든 작업 연산이 인증 없이 수락된다고 명시합니다. (GHSA-qvf5-9prv-7r9c)
두 출처가 공유하는 조건은 다음과 같습니다.
- Network-AI 5.14.0 이상 5.15.5 미만 (CVE 레코드 기준)
- A2AServer 클래스가 사용되는 배포
- 시크릿(secret)이 구성되지 않은 상태
세 조건 중 배포마다 값이 갈리는 지점은 마지막입니다. 두 출처가 나란히 "when no secret is configured"라는 조건절을 붙이는 이유도 여기에 있습니다. 다시 말해 이 취약점이 지적하는 노출 여부는 설정 값을 확인하기 전까지 판단할 수 없고, 설정 값 확인이 곧 1순위 점검 항목이 됩니다.
영향 범위
대상은 npm 패키지 network-ai입니다. npm 레지스트리 메타데이터에는 ai-agents, agentic-ai, multi-agent, multi-agent-systems, agent-framework, llm, llm-agents 같은 키워드가 기재되어 있습니다. 패키지의 구체적 기능이나 용도는 제공된 근거에 별도로 설명되어 있지 않습니다. (npm 레지스트리 network-ai)
버전 표기는 출처마다 다르게 정리되어 있어 나란히 두고 볼 필요가 있습니다.
- CVE 레코드와 VulnCheck advisory: 5.14.0 이상 5.15.5 미만. VulnCheck는 제목 단계에서 이미 "5.14.0 before 5.15.5 Missing Authentication in A2AServer Task Operations"로 같은 범위를 표기합니다. (VulnCheck advisory)
- GitHub 어드바이저리의 Affected Versions: ecosystem은 npm, package는 network-ai, 확인된 영향 범위는 5.15.4 이하, 어드바이저리 작성 시점에 확인된 최신 릴리스는 5.15.4, fix status는 not fixed.
CVE 표기는 5.15.5를 상한 경계로 삼는 반면, 어드바이저리는 작성 시점을 기준으로 수정이 완료되지 않았다고 밝힙니다. 두 표기가 어디서까지 일치하는지는 원문 추가 확인이 남는 부분입니다. 따라서 실무적으로 필요한 결론은 제공된 두 범위 안에서만 성립합니다. CVE가 지정한 5.14.0 이상 5.15.5 미만, 또는 어드바이저리가 확인한 5.15.4 이하에 해당하는 A2AServer 배포에서 시크릿 구성 값이 비어 있다면, 패치 확인과 별개로 점검이 필요합니다. 두 범위 밖에 있는 버전이 취약한지는 제공된 근거로 확인할 수 없습니다.
정적 조건인 버전과 클래스 사용 여부와 달리 설정 값은 배포마다 달라집니다. 그래서 먼저 점검 대상에 올려야 할 배포는 다음과 같습니다.
- A2AServer를 포함해 실행하되 시크릿 구성 값을 별도로 확인한 적 없는 배포
- 인증 없이 A2A 작업 연산에 닿을 수 있는 위치에 그 인터페이스를 열어둔 배포
- 취약 범위로 표시된 버전을 사용 중이나 인증 요구 상태를 확인한 적 없는 배포
기술적 분석
조건과 결과: 자격 증명 없이 작업 연산에 닿는 상태
제공된 근거가 직접 말하는 조건과 결과는 다음입니다. 시크릿이 구성되지 않은 경우, 인증되지 않은 공격자가 A2AServer의 작업(task) 연산에 접근할 수 있고, 어드바이저리는 같은 조건에서 모든 작업 연산이 인증 없이 수락된다고 표기합니다. 표기 자체로 보면 공격자 측은 별도의 자격 증명을 갖추거나 인증 절차를 뚫는 별도 단계를 전제하지 않습니다.
시크릿 확인 동작이 코드에서 어떻게 구현되어 있는지, 왜 그런 결과로 이어지는지에 대한 구현 세부와 그 원인은 전달된 근거에 포함되어 있지 않습니다. 그래서 이 글은 확인된 조건과 결과까지만 다루고, 동작 원인에 대한 설명은 추가 원문 확인이 필요한 부분으로 남겨 둡니다.
확인된 서술만 놓고 보면 이 사안의 관건은 코드 결함의 정교함이 아니라 배포의 설정 상태입니다. 조건절이 명시하는 상태로 남아 있는 동안에만 접근 가능성이 성립하기 때문입니다. 이런 조건은 버전 번호만으로는 판단되지 않습니다. 같은 버전에서도 설정 값에 따라 노출 여부가 달라질 수 있고, 그렇다면 취약 버전 필터만으로 통과시킬 수 없는 점검 항목이 하나 생깁니다.
작업 연산에 인증 없는 요청이 닿을 수 있다는 사실은 에이전트 시스템의 작업 무결성 문제와 이어집니다. 다만 각 배포가 작업 단위에 무엇을 실어 나르는지, 그 결과로 어떤 하위 영향이 발생하는지는 제공된 근거에 명시되어 있지 않습니다. 이 글에서는 작업 연산에 접근할 수 있다는 서술까지만을 확인된 사실로 다룹니다.
확인되는 것과 조건으로 성립하는 것
제공된 근거와 전달된 조사 결과의 범위에서는 실제 야생 악용 사례가 발견되지 않았습니다. 다만 GitHub 보안 어드바이저리가 조건과 동작 결과, 영향 범위를 공개적으로 설명하고 있다는 점은 확인됩니다. 따라서 시크릿을 구성하지 않은 채 A2AServer를 열어둔 환경이라면, 어드바이저리에 적힌 조건이 그 환경에서 성립하는지 먼저 확인해야 합니다.
여기서 판단의 성격을 구분할 필요가 있습니다. 악용 사례가 관측되지 않았다는 사실만으로 위험을 낮게 결론짓는 것도, 반대로 조건 성립을 곧 침해로 읽는 것도 제공된 근거로 뒷받침되지 않습니다. 확인된 것은 야생 관측이 아니라 조건절이므로, 이 사안은 악용 관측 기반의 긴급 대응보다는 악용 조건이 공개적으로 설명된 구성에 대한 조건부 점검 사안에 가깝습니다. 점검의 기준을 악용 관측에 두면 확인할 대상이 좁아지고, 출처가 붙인 조건절에 두면 시크릿 구성 값이 비어 있는 배포가 점검 대상으로 올라옵니다.
공개 PoC·익스플로잇 분석
- 출처: 이 사안에서 공개적으로 확인되는 문서는 Jovancoding/Network-AI의 GitHub 보안 어드바이저리 GHSA-qvf5-9prv-7r9c입니다. 어드바이저리는 제목 단계에서 "A2AServer accepts all task operations unauthenticated when no secret is configured"라는 동작 결과를 밝히고, Affected Versions에서 npm 패키지 network-ai의 확인된 영향 범위를 5.15.4 이하, 작성 시점에 확인된 최신 릴리스를 5.15.4, fix status를 not fixed로 기재합니다. CVE 프로젝트의 CVE-2026-120314 레코드와 VulnCheck advisory가 같은 조건과 5.14.0 이상 5.15.5 미만 범위를 동일한 취지로 반복해 기재합니다.
- 전제조건: 공개된 설명이 성립하려면 세 조건이 겹쳐야 합니다. Network-AI를 CVE 기준 5.14.0 이상 5.15.5 미만(어드바이저리 기준 5.15.4 이하)으로 실행할 것, A2AServer 클래스가 사용되는 배포일 것, 시크릿이 구성되지 않았을 것. 앞의 둘은 버전과 코드 사용 여부라는 정적 조건이지만 셋째는 배포마다 값이 달라지는 설정 조건입니다. 같은 버전이라도 시크릿 구성 값이 존재하면 인용된 조건절 자체가 성립하지 않습니다.
- 입증 범위: 전달된 근거가 입증하는 범위는 시크릿이 구성되지 않은 상태에서 인증 없는 요청이 모든 작업 연산에 도달할 수 있다는 조건과 결과, 그리고 영향 범위와 작성 시점의 미수정 상태 표기까지입니다. 실행 가능한 익스플로잇 코드, 동작하는 공격 스크립트, 실제 트래픽 샘플, 야생 악용 관측 기록은 전달된 근거에 포함되어 있지 않습니다. 따라서 이 절은 검증된 악용 도구가 유포되고 있다는 주장 없이, 공개된 것이 코드보다 조건과 영향 범위의 설명이라는 전제 안에서 말합니다.
- 운영상 의미: 어드바이저리의 fix status 표기 not fixed는 작성 시점을 기준으로 수정이 확인되지 않았다는 알림으로 읽히며, 그 이후 시점의 릴리스 상태까지 뜻하는 것은 아닙니다. 그래서 자기 배포의 시크릿 구성 여부와 A2AServer 사용 여부를 확인하는 일은 패치 릴리스 확인과 서로 대체되지 않는 별개 항목으로 남습니다. 또한 작업 연산 도달 가능성은 인터페이스가 도달 가능한 환경에서만 의미가 있으므로, 도달 범위 확인이 이 조건이 우리 환경에 해당하는지를 가르는 첫 점검 항목이 됩니다.
검증 상태와 한계
판단을 보류해야 할 지점은 다음과 같습니다.
- 제공된 근거와 전달된 조사 결과의 범위에서 야생 악용 사례는 발견되지 않았습니다. 개별 환경의 실제 침해 여부는 그 환경의 확인 없이는 판단할 수 없습니다.
- CISA KEV 등재 여부는 제공된 근거로 확인되지 않습니다.
- 심각도 점수 등 CVSS 지표는 제공된 근거에 없어 이 글에서 다루지 않습니다.
- 정확한 수정 버전 번호와 릴리스 시점은 확정되지 않았습니다. npm 레지스트리에는 network-ai의 최신 배포가 5.17.2로 표시되지만, 이 릴리스가 취약 범위를 해결했는지는 근거에 명시되어 있지 않습니다. 업그레이드 전 릴리스 정보와 어드바이저리 업데이트를 별도로 확인해야 합니다.
- 영향 범위의 하위 경계(5.14.0부터)와 어드바이저리의 "5.15.4 이하" 표기가 서로 어떻게 맞는지는 추가 원문 확인이 있으면 보강할 수 있는 부분입니다.
- 시크릿 확인 동작의 구현 세부와 그 원인은 제공된 근거에 없습니다. 이 글은 조건과 결과까지만 다룹니다.
- 실행 가능한 PoC 코드의 존재 여부와 악용 관측 기록도 전달된 근거로 확인할 수 없습니다. 위 PoC·익스플로잇 분석은 공개 어드바이저리에 기재된 조건과 영향 범위의 한도 안에서 작성했습니다.
- 구체적인 로그 항목, 모니터링·탐지 방법, 구성 강화 절차, 네트워크 접근 제한 지침은 제공된 자료에 포함되어 있지 않습니다. 아래 대응 설명은 설정 값과 사용 여부, 도달 가능 범위, 버전 확인이라는 근거 범위 안에 머무릅니다.
대응 방안
지금 확인할 것
- 운영 중인 Network-AI 버전과 A2AServer 사용 여부를 확인합니다. CVE 기준 5.14.0 이상 5.15.5 미만, 또는 어드바이저리 기준 5.15.4 이하에 해당하면 조건이 성립할 여지가 있습니다.
- 배포 설정에 시크릿 구성 값이 실제로 존재하는지 확인합니다. 두 출처가 나란히 붙인 조건이 "when no secret is configured"이므로, 설정 값의 유무 확인이 점검의 첫 항목이 됩니다.
- A2A 작업 연산 인터페이스가 어디에서 도달 가능한지 확인합니다. "unauthenticated attackers"라는 표기는 도달 가능성이 전제되어야 성립하는 서술이므로, 도달 범위는 이 조건이 우리 환경에 해당하는지를 가르는 기준이 됩니다.
확인 다음에 할 일
- 버전 범위와 설정 값 중 하나라도 조건에 맞으면 수정 릴리스 제공 여부를 확인합니다. 어드바이저리는 작성 시점의 fix status를 not fixed로 기재했으므로, 릴리스 대기만으로는 자기 환경의 조건 확인을 대신할 수 없습니다.
- 수정 릴리스가 확인되면 릴리스 정보를 살펴본 뒤 업그레이드를 진행합니다. npm 레지스트리에 표시되는 최신 배포 5.17.2가 취약 범위를 해결했는지는 근거에 명시되어 있지 않습니다.
- 버전과 설정 값, 도달 가능 범위는 주기적으로 다시 확인합니다. 설정 값은 코드와 무관하게 배포 시점마다 달라질 수 있는 항목입니다.
- 제공된 근거에는 시크릿 구성이 인증을 요구하도록 만든다는 서술도, 네트워크 접근 제한이나 다른 구성 조치가 위험을 줄인다는 서술도 없습니다. 그래서 이 글은 특정 구성 지시를 하지 않고 확인 행위에만 한정합니다. 설정 변경이 필요해 보인다면 앞서 링크한 CVE 레코드와 어드바이저리 원문, 업데이트 공지를 먼저 확인하는 편이 안전합니다.
참고자료
- CVE-2026-120314 record (cvelistV5)
- A2AServer accepts all task operations unauthenticated when no secret is configured - Summary
- Network-AI 5.14.0 before 5.15.5 Missing Authentication in A2AServer Task Operations
- network-ai package metadata (dist-tags)
함께 읽으면 좋은 글
- CVE-2026-120313: Network-AI sanitizePath의 형제 디렉터리 우회, 접두사 검사 한 줄이 만든 샌드박스 탈출
- CVE-2026-120312: network-ai AgentVCR 경로 순회, 벤더 권고 시점 최신 확인 5.15.4·fix status 'not fixed'
- CVE-2026-120311: Network-AI FileJobStore job ID 경로 순회, 임의 .json 읽기·삭제
본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!