오픈소스 AI 에이전트 라이브러리 Network-AI의 작업 저장소 컴포넌트에서 경로 순회 취약점이 확인되었습니다. 충격 예고보다는, 어떤 조건에서 무엇이 노출되고 지금 어디까지 확인할 수 있는지부터 정리하는 것이 유용한 사안입니다.
개요

Network-AI는 5.13.4 이상 5.15.5 미만 버전에서 FileJobStore를 통한 경로 순회(path traversal) 취약점이 확인되었습니다. CVE 레코드는 5.13.4 이상 5.15.5 미만을 영향 범위로 적시하며, 작업 식별자인 job ID 입력값에 경로 순회 시퀀스를 넣으면 저장소가 접근하는 파일 경로가 의도된 저장소 디렉터리를 벗어나 임의의 .json 파일을 가리키게 됩니다. 그 결과 파일을 읽어 정보가 노출되거나, 파일을 삭제해 데이터 유실과 서비스 가용성 훼손이 발생할 수 있습니다. 이 취약점은 CVE-2026-120311로 관리되며, 상세는 CVE 레코드와 GHSA-v64j-mc7x-c7x7 보안 권고에 공유되어 있습니다.
수정 상태는 자료마다 담고 있는 시점이 다르므로 그대로 구분해 읽어야 합니다. GHSA 권고는 확인 당시 최신 릴리스였던 5.15.4까지 취약 코드가 수정되지 않은 채 존재한다고 밝힙니다. CVE 레코드가 지정한 영향 범위는 5.15.5 직전까지이므로 5.15.5는 이 범위 밖입니다. 반면 그 이후인 5.15.6 이상 버전과 npm registry에 표시된 최신 배포 5.17.2에서 이 경로 순회가 실제로 수정되었는지는, 이번에 제공된 자료만으로는 확정할 수 없습니다. 따라서 수정 여부를 단정하기보다 사용 중인 버전과 벤더 변경 이력을 기준으로 확인하는 편이 안전합니다.
영향 범위
영향 범위는 다음 두 조건이 동시에 성립하는 환경으로 좁혀집니다.
- Network-AI 5.13.4 이상 5.15.5 미만 버전을 실행 중일 것
lib/job-queue.ts모듈의FileJobStore를 실제로 사용할 것
버전 범위는 취약 코드의 등장 시점과 함께 읽으면 더 명확해집니다. GHSA에 따르면 lib/job-queue.ts 모듈은 릴리스 5.13.4에서 처음 등장했고 5.13.3 이하에는 존재하지 않습니다. 같은 권고는 이후 릴리스에도 취약 코드가 변하지 않은 채 포함되어, 확인 당시 최신 릴리스였던 5.15.4에서도 수정되지 않았다고 적고 있습니다.
자료로 확인할 수 있는 경계는 두 층위입니다. CVE 레코드가 적시한 취약 범위는 5.13.4 이상 5.15.5 미만이고, GHSA가 미수정으로 확인한 지점은 5.15.4까지입니다. 5.15.5는 CVE 레코드상 영향 범위 밖이며, 그 이후인 5.15.6 이상 버전과 npm 최신 배포 5.17.2에서 수정이 반영되었는지는 제공된 근거로 확정할 수 없습니다. 상위 버전으로의 업그레이드를 이미 진행했거나 계획 중이라면, 그 버전이 이 취약 코드를 포함하는지 여부는 변경 이력이나 벤더 정보로 별도로 확인해야 합니다.
npm registry 메타데이터상 network-ai의 최신 배포는 5.17.2로 확인됩니다. 다만 이는 배포 버전 현황을 보여주는 정보이고, 그 자체가 이 취약점의 수정 완료를 증명하지는 않습니다.
기술적 분석
취약 지점은 lib/job-queue.ts의 FileJobStore 구현입니다. 동작 구조를 따라가면 원인이 또렷해집니다.
- job ID는 작업 단위를 식별하는 입력값으로, 파일 기반 저장소는 이 값으로 저장 대상 파일 경로를 구성한다.
- job ID에 경로 순회 시퀀스가 그대로 통과되면, 조립된 경로는 저장소 디렉터리를 빠져나간다.
- 저장소는 그 경로를 대상으로 파일 읽기와 삭제를 수행한다.
즉 이것은 복잡한 로직 버그가 아니라, 파일 경로에 들어가는 식별자를 정제하지 않아 발생하는 전형적인 경로 순회입니다. job ID를 파일명으로 사용하는 구현 가정 위에서 입력 검증과 최종 경로 검증이 빠진 것이 원인이 됩니다.
CVE 레코드는 피해 대상을 .json 파일로 명시합니다. job ID에 순회 시퀀스를 넣어 임의의 .json 파일을 읽을 수 있으면 정보가 노출되고, 삭제할 수 있으면 데이터 유실과 서비스 가용성 훼손이 발생합니다. 다만 그 실제 영향의 크기는 일률적으로 정해지지 않습니다. 실행 계정이 저장소 디렉터리 밖에서 어떤 .json 파일에 읽고 쓰기할 권한을 갖고 있는지, 그 경로에 실제로 어떤 파일이 놓여 있는지에 따라 노출 범위가 달라지기 때문입니다. 같은 CVE 번호라도 파일 접근 권한이 넓으면 피해 범위가 커지고, 저장 전용 디렉터리에 한정되고 권한이 좁으면 영향이 줄어들 수 있습니다. 파일 시스템 구성과 접근 권한이라는 이 조건은 이번에 제공된 근거가 뒷받침하지 않으므로, 각 환경이 직접 확인해야 하는 지점입니다.
공개 PoC·익스플로잇 분석
공개된 개념 증명(PoC)과 기술적 상세가 확인된 것으로 분석됩니다. 반면 제공된 조사 범위에서는 실제 야생에서의 악용 사례가 확인되지 않았고, CISA KEV 등재 여부도 확인되지 않았습니다. 두 사실은 반드시 분리해서 읽어야 합니다. 악용 사례 부재는 안전의 증거가 아니고, 공개 PoC는 잠재 위험이 이미 재현 가능한 상태로 공개되어 있음을 뜻합니다. 다만 이번에 확인 가능한 공개 출처 인용문에는 PoC의 구현 상세가 담겨 있지 않아, 재현에 필요한 전제조건이나 코드 수준의 세부까지는 자료로 뒷받침할 수 없습니다.
PoC가 무엇을 입증하고 무엇을 입증하지 않는지도 대응에 직접 영향을 줍니다. PoC가 보여주는 것은 job ID 경로의 입력 처리 결함입니다. 반면 실제 피해 크기는 그 파일 저장소가 어디에 놓여 있고, 어떤 .json 파일을 그 경로를 통해 참조·저장하며, 접근 계정이 어떤 파일 권한을 갖는가에 따라 달라집니다. 같은 CVE 번호라도 저장 디렉터리 구성이 다른 두 환경의 실제 피해는 크게 다를 수 있으며, 이 차이까지 자료는 뒷받침하지 않습니다. 따라서 공개 PoC는 위험의 유무를 확정하는 정보라기보다, 버전 점검과 입력·경로 검증을 지금 바로 꺼내야 한다는 것을 보여주는 정보로 해석하는 편이 정확합니다.
대응 방안
수정 완료 여부가 제공 자료로 확정되지 않은 상태이므로, 우선순위는 제거가 아니라 노출 확인과 영향 제한에 있습니다.
즉시 확인
- 운영 서비스와 CI 이미지의 패키지 의존성 목록에서 Network-AI 버전이 5.13.4 이상 5.15.5 미만인지 확인합니다. 이 범위라면 즉시 점검 대상입니다.
- 5.15.5 이후 버전(예: npm 최신 배포 5.17.2)을 사용 중이라면, CVE 레코드상 영향 범위 밖이더라도 변경 이력 또는 벤더 정보를 확인해 이 취약 코드의 포함 여부를 판단합니다. 제공된 자료만으로는 5.15.6 이상과 5.17.2의 수정 반영을 확정할 수 없기 때문입니다.
FileJobStore와lib/job-queue.ts를 실제로 사용하는지, 다른 작업 저장소 구현을 쓰는지를 구분합니다. 이 컴포넌트를 쓰지 않으면 이 취약 경로 자체가 성립하지 않습니다.
입력·경로 제어
- job ID에 경로 순회 시퀀스가 포함되지 않도록 입력 검증 또는 정제 계층을 적용합니다. job ID를 허용 문자열 allowlist로 검증하는 방식이 이 경로에 대한 직접적인 제어에 가깝습니다.
- job ID로 조립된 최종 파일 경로가 의도된 저장소 디렉터리 안에 머무르는지 확인하는 containment(경로 포함) 검증을 입력 검증과 함께 적용합니다.
- 파일 삭제 기능이 실제 운영에 필요하지 않다면
FileJobStore의 삭제 경로를 임시로 차단하거나 권한을 제한합니다. 읽기 경로와 삭제 경로의 위험 성질이 다르므로, 필요 없는 기능부터 줄이는 것이 효율적입니다.
중장기
- 5.15.6 이후 버전에 수정이 반영되었는지 변경 이력을 확인하고, 수정이 확인되는 대로 업그레이드를 적용합니다. npm 최신 배포가 5.17.2까지 올라간 상태이므로 대상 버전은 이 확인 절차로 정합니다.
- job ID를 화이트리스트 문자셋으로 검증하는 입력 정규화를 상시화된 구현 기준으로 도입합니다.
- 파일 접근을 전용 디렉터리로 제한하는 샌드박싱을 적용해, 저장소가 참조할 수 있는 파일 경로의 범위를 구조적으로 좁힙니다.
탐지 관점
FileJobStore가 처리하는 job ID에../등 경로 순회 패턴이 포함된 요청 로그를 모니터링합니다.- 저장소 디렉터리 밖의
.json파일에 대한 비정상적인 읽기·삭제 이벤트를 감시합니다. - 알 수 없는 경로의
.json파일 삭제 또는 변조 이력에 대해 파일 무결성을 점검합니다.
한계
- 실제 악용 사례가 확인되지 않았다는 사실은 안전을 의미하지 않으며, 공개된 PoC로 인해 악용 가능성은 계속 존재합니다.
- CISA KEV 등재 여부는 확인되지 않아, 이 건의 긴급도를 외부 지표를 근거로 추가 상향하거나 하향할 수 없습니다.
- CVE 레코드는 5.15.5를 영향 범위 밖으로 적시하지만, 그 이후인 5.15.6 이상과 npm 최신 배포 5.17.2에서 수정이 반영되었는지는 제공된 근거만으로 확정할 수 없어 별도 확인이 필요합니다.
- 정확한 패치 커밋 또는 수정 버전 상세는 제공된 자료에 포함되어 있지 않습니다.
- 파일 접근 권한과 디렉터리 구성에 따른 실제 피해 규모의 차이는 이번 근거로 뒷받침되지 않아, 환경별 확인이 필요합니다.
참고자료
- CVE-2026-120311 Network-AI 5.13.4 before 5.15.5 Path Traversal via FileJobStore Job ID
- network-ai FileJobStore job ID path traversal allows arbitrary .json file read and delete (GHSA-v64j-mc7x-c7x7)
- network-ai - npm registry 메타데이터 (dist-tags)
함께 읽으면 좋은 글
- CVE-2026-110936: Siemens Software Center DLL 사이드로딩, 악용 확인과 KEV 등재가 뜻하는 대응 우선순위
- CVE-2026-102764: BeyondTrust Remote Support 인증 우회, KEV 등재로 확인된 위험과 점검 순서
- CVE-2026-76519: Cisco Secure Email Gateway 임의 파일 쓰기 취약점, KEV 등재와 CVE 재매핑 점검
본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!