DEEP DIVE REPORT

CVE-2026-128079: envd requirements 경로 처리의 호스트 파일 노출 조건 점검

SecurityDesk
• 2026.11.14 • 조회 3

envd로 빌드를 만들면서 install.python_packages(requirements=...)에 넘기는 requirements 경로는 으레 "빌드 컨텍스트 안의 파일만 읽겠지"라고 전제합니다. CVE-2026-128079는 바로 그 전제를 점검하게 하는 취약점입니다. 호스트에서 파일을 여는 단계의 경계 처리가 부족해, 조건이 갖춰지면 컨텍스트 밖 파일 내용이 의존성 항목처럼 해석되어 로그나 빌드 메타데이터에 나타날 수 있습니다.

개요

개요 인포그래픽
envd는 사람과 에이전트 모두를 위한 재현 가능한 개발 환경을 제공하는 도구입니다. 이번 취약점은 install.python_packages(requirements=...)가 받는 requirements 파일을 호스트에서 읽을 때 빌드 컨텍스트 안으로의 제한(containment)이 충분히 적용되지 않아, 컨텍스트 밖 파일에 접근할 수 있다는 내용입니다.

노출 형태는 컨텍스트 밖 파일 내용이 의존성 항목으로 해석되어 디버그 로그나 빌드 단계 메타데이터에 등장하는 방식으로 서술됩니다. 읽기는 envd 프로세스의 파일 접근 권한을 넘어서지 않습니다. 대상은 0.3.38 이상 1.3.6 미만의 envd이고, CVE 레코드는 1.3.6에서 수정된다고 명시합니다.

중요한 경계 설정도 함께 제시됩니다. envd 보안 권고는 이 사안이 임의 코드 실행이나 모든 파일의 제한 없는 노출을 뒷받침하지 않는다고 분명히 말합니다. 즉 "읽힐 수 있다"와 "원하는 파일을 원하는 만큼 꺼낼 수 있다"는 같은 문장이 아닙니다.

영향 범위

영향 버전 전체에 공통되는 조건은 하나입니다. 공격자가 빌드 입력에 영향을 줄 수 있어야 하고, requirements 경로를 포함해 빌드 정의가 조절 가능해야 한다는 뜻입니다. CVE 레코드는 여기에 더해 1.3.5에서 남은 경합을 악용하려면 관련 파일 시스템 경로를 동시에 변경할 수 있어야 한다고 덧붙입니다. 따라서 경로의 동시 변경이라는 조건은 0.3.38부터 1.3.6 이전까지 모든 영향 버전의 요건이 아니라, 1.3.5에 남은 경합 시나리오에 한정해 논의합니다.

그래서 모든 envd 배포가 같은 노출면에 놓이지는 않습니다. 판단 기준은 코드의 복잡성이 아니라 "빌드 입력과 그 파일 경로를 누가 바꿀 수 있는가"에 가깝습니다. 외부 기여자나 신뢰하기 어려운 자동화 경로가 requirements 값을 바꿀 수 있는 구조라면 공통 조건이 열리는 것이고, 1.3.5의 경합 시나리오까지 검토하려면 관련 경로를 동시에 변경할 수 있는지를 그 버전 한정으로 따로 확인합니다. 이 판단은 각 환경의 입력 통제 구조와 버전 상태를 살펴야 성립합니다.

노출의 크기는 envd 프로세스의 파일 접근 권한, 그리고 읽힌 파일 내용이 requirements 파싱을 통과하는지에 따라 달라집니다. 권고는 정보가 의존성 디버그 로그와 빌드 단계 메타데이터로 노출될 수 있다고 설명하고, 그 여부와 범위가 파일 내용과 requirements 파싱에 좌우된다고 덧붙입니다. 영향 범위를 일률적인 수치로 단정할 수 없는 이유가 여기 있습니다.

기술적 분석

수정 전 구현은 requirements 파일과 로컬 wheel에 임의의 경로를 허용했습니다. PR #2112의 설명에 따르면 requirements 파일은 호스트에서 빌드 컨텍스트 검사 없이 열렸고, ../../etc/passwd 같은 경로가 빌드 컨텍스트를 벗어날 수 있었습니다. 그 내용이 어디까지 나타나는지는 별도 문제입니다. 권고는 파일 내용과 requirements 파싱 결과에 따라 의존성 디버그 로그와 빌드 단계 메타데이터로 정보가 노출될 수 있다고 조건지어 서술하므로, 특정 예시 경로의 내용이 실제로 유출됐다고는 단정하지 않습니다. 빠져나갈 수 있는 경로와, 조건이 갖춰질 때 노출면이 생길 수 있다는 사실까지가 근거가 뒷받침하는 범위이고, 결함의 성격은 경로 문자열에 대한 경계 처리가 빠져 있던 전형적인 경로 순회(path traversal)입니다.

눈에 띄는 부분은 경계를 어디에 두느냐의 문제입니다. 경로 문자열을 먼저 확인한 뒤 별도로 파일을 여는 방식에서는, 확인한 경로와 실제로 열린 파일이 달라질 수 있습니다. PR #2119는 심볼릭 링크를 먼저 해석한 뒤 os.Open을 호출한 순서 때문에 검증과 사용 사이에 경합(race)이 남았다고 기록하고, os.OpenRoot와 Root.Open을 써서 파일 시스템 탐색 도중에 경계가 적용되도록 바꿨다고 설명합니다. 수정 커밋에 남은 "경로명 기반 읽기는 scipy를 보지만 루트 기반 읽기는 여전히 numpy를 본다"는 주석은, 같은 상황에서 경로 이름으로 열 때와 루트를 기준으로 열 때 서로 다른 파일이 읽힌다는 결과 차이를 보여주는 회귀 테스트의 일부로 적혀 있습니다.

운영적으로 읽어둘 의미는 단순합니다. 경계는 파일을 "열 때" 적용되어야 합니다. 미리 검사하고 나중에 여는 조합은 검사 결과와 무관한 파일을 열 수 있으므로, 경로를 한 번 걸러냈다는 사실만으로 컨텍스트 격리가 입증되지 않습니다. 1.3.6의 TOCTOU 수정은 이 순서 문제를 없애는 방향으로 들어가 있고, 릴리스 노트에도 "fix: prevent TOCTOU in requirements file reads"가 포함됩니다.

확인 상태와 남은 경합

1.3.5에서 경합 조건까지 악용하려면 빌드 입력에 대한 영향력과 관련 파일 시스템 경로의 동시 변경 능력이 함께 필요합니다. 이 시나리오는 두 능력 가운데 하나만으로는 성립하지 않으며, 1.3.5가 아닌 영향 버전에는 이 경합 조건이 근거로 제시되지 않았습니다.

제공된 근거의 한계도 분명히 해둡니다. 실제 환경에서의 악용이나 공개 공격 증명 코드의 존재는 확인되지 않았고, 취약점의 존재와 악용 여부는 구분해서 다뤄야 합니다. 개발자 측 설명을 독립적으로 검증한 결과도 제시되지 않았습니다. 특정 탐지 규칙이나 로그 필드도 근거에 없으므로, 아래 탐지 관련 내용은 규칙이 아니라 점검 방향의 수준에 머무릅니다.

대응 방안

먼저 확인할 것

  • 사용 중인 envd 버전이 0.3.38 이상 1.3.6 미만인지 확인합니다.
  • requirements 값과 로컬 wheel 경로를 포함한 빌드 입력을 어떤 주체가 바꿀 수 있는지 확인합니다. 이것이 공통적으로 점검할 조건입니다.
  • 1.3.5를 쓴다면, 관련 파일 시스템 경로를 동시에 변경할 수 있는 경로가 열려 있는지를 별도 항목으로 봅니다. 근거는 1.3.5의 경합 악용에 이 능력이 추가로 필요하다고 적습니다.

노출이 있었는지 살피기

  • 영향받을 수 있는 빌드의 디버그 로그와 빌드 단계 메타데이터에 예상하지 못한 파일 내용이 섞여 들어갔는지 확인합니다.
  • requirements 경로에서 빌드 컨텍스트를 벗어나려는 시도가 있었는지 점검합니다.
  • 경로 변경과 파일 읽기 사이의 경합은 경로 문자열 점검만으로는 잡히지 않을 수 있습니다. 관련 경로의 변경 이력을 확인할 수 있다면 함께 검토합니다.

조치 순서

영향 버전이면서 빌드 입력에 대한 영향 가능성이 확인된다면, 수정 버전인 1.3.6 적용을 우선 검토합니다. 그 전까지는 빌드 입력과 관련 경로를 바꿀 수 있는 주체를 제한하는 방법을 검토합니다.

제공된 근거에는 수정 버전 적용 외의 공식 우회 조치가 제시되지 않았습니다. 근거 없는 대체 완화책을 단정하지 말고, 버전 확인과 입력 통제라는 확인 가능한 조건부터 정리하는 편이 안전합니다.

업데이트 이후의 관리

업데이트 이후에도 빌드 입력의 신뢰 경계와 envd 프로세스의 파일 접근 권한을 다시 살펴 잠재적 노출 범위를 줄이는 것이 지속적 관리에 가깝습니다. 노출 가능성은 프로세스의 파일 접근 권한과, 읽힌 파일 내용이 requirements 파싱을 통과하는 여부가 함께 제한하기 때문입니다.

참고자료

함께 읽으면 좋은 글

본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.

로그인

아직 댓글이 없습니다.

첫 번째 댓글을 작성해보세요!

IT 도구 서랍

→ Unix: 2025-01-15T09:30:00
→ 날짜: 1736934600

→ ASCII: ABC
→ 문자: 65 66 67

ASCII 코드표 — 클릭하면 입력란에 추가

DecHex약어설명
DecHex문자
DecHex문자

→ 유니코드: 홍길동
→ 문자: \ud64d\uae38\ub3d9