Skyvern의 샌드박스 탈출 취약점이 CVE-2026-82447로 지정돼 2026년 8월 29일 15:30:19 UTC에 GitHub Advisory Database에 공개됐다. LLM이 생성한 단계에 따라 웹 브라우저를 제어하는 이 자체 호스팅 에이전트에서, 해당 취약점이 설명하는 코드 수정은 그보다 53일 앞선 7월 6일 21:44:03 UTC에 저장소에 반영됐다.

실제 취약점이 무엇이었나

Skyvern의 TextPromptBlock은 모든 프롬프트를 두 번 렌더링했다. 첫 번째 처리는 의도대로 Jinja의 SandboxedEnvironment를 거쳤다. 그러나 두 번째 처리에서는 공격자가 영향을 미칠 수 있는 동일한 문자열을 샌드박스가 적용되지 않은 렌더러에 다시 통과시켰고, 이는 서버 프로세스 권한으로 코드를 실행하기에 충분했다. 수정 커밋 d723de6은 삭제 중심이다. block.py에서 3줄을 추가하고 11줄을 삭제해 두 번째 렌더링과 이를 입력하던 parameter_values 인자를 제거했다. 나머지 커밋은 테스트다.

서술이 어긋나는 지점

이런 권고문에 대해 사실과 다른 두 가지 말이 따라붙곤 한다. 첫째는 이것이 조용한 패치였다는 주장이다. 그러나 그렇지 않다. 7월 7일 22:19:18 UTC에 공개된 v1.0.45 릴리스 노트에는 실제로 "SSTI"라는 단어가 들어 있다. 다만 이는 약 190줄에 이르는 릴리스 본문 중 하나의 항목일 뿐이며, 별도의 벤더 보안 권고도 없고 당시 CVE도 없었으며, 평범한 변경 기록과 구별되는 점도 없었다. 둘째는 CVE 연도가 노출 시점을 알려준다는 암시다. 그렇지 않다. 이 CVE는 프로젝트가 아니라 VulnCheck가 제3자 번호 부여 기관으로서 발급했다.

도구를 무력화하는 부분

이 권고문 기록에는 CVSS 3.1 점수 8.8, CVSS 4.0 점수 8.7이 실려 있고 CWE-1336으로 분류된다. 하지만 구조화된 vulnerabilities 배열은 비어 있다. 영향을 받는 범위인 0.2.1부터 1.0.45 미만까지는 VulnCheck 페이지의 서술문으로만 존재한다. GitHub의 구조화된 권고문 데이터를 읽어 고정된 skyvern 의존성과 대조하는 스캐너라면 아무것도 탐지하지 못할 것이다.

이런 형태가 반복되는 이유

이 취약점의 악용 경로는 특이한 것이 아니다. 워크플로 매개변수나 상위 블록의 출력은 에이전트가 스스로 생성하거나 받아들인 텍스트이고, 그것이 템플릿 렌더러로 전달된 뒤 에이전트 호스트에서 코드가 된다. 이것이 모델의 출력이 템플릿 계층을 조종해 실행으로 이어지는, 프롬프트 인젝션에서 실행으로 가는 가장 단순한 다리이며, 모델 출력이 템플릿 계층을 움직이도록 허용하는 도구들에 구조적으로 내재한 문제다.