🇰🇷 한글 설명
Metalama는 C#용 Roslyn 기반 오픈소스 패턴/아키텍처 도구입니다. 2025.1.18, 2026.0.25, 2026.1.19 이전 버전에서는 Metalama.Framework와 Metalama.Tool이 예측 가능한 임시 디렉터리에서 컴파일 타임 어셈블리와 실행 파일을 로드·실행하며, Linux와 macOS의 기본 임시 경로는 world-writable이라 무결성 검증 없이 마커 파일만으로 기존 산출물을 신뢰합니다. 이로 인해 로컬 비특권 사용자가 악성 DLL을 심어 상위 권한 빌드 계정의 프로세스에서 실행되게 할 수 있습니다.
💡 쉬운 설명
같은 컴퓨터를 쓰는 다른 사용자가 개발 도구가 사용하는 임시 폴더에 악성 파일을 미리 넣어둘 수 있습니다. 이후 권한이 더 높은 개발자나 빌드 계정이 빌드하면 그 악성 파일이 실행되어 소스코드나 비밀 정보가 유출되거나 빌드 결과가 변조될 수 있습니다.
🇺🇸 원문 (English)
Metalama is a Roslyn-based open-source patterns and architecture toolkit for C#. Prior to 2025.1.18, 2026.0.25 and 2026.1.19, Metalama.Framework and Metalama.Tool load and execute compile-time assemblies, auxiliary executable tools and embedded helper assemblies from predictable temporary directories. On `Linux` and `macOS`, the default `Path.GetTempPath()` location is world-writable, and existing artifacts are trusted based on sentinel or `.completed` marker files rather than integrity verification. A local unprivileged user on a shared machine or CI/build agent can pre-create the deterministic directory structure and plant a malicious DLL with the matching sentinel. When a higher-privileged developer or build account subsequently builds, Metalama skips regeneration and executes the planted artifact in the compiler, IDE or MSBuild process as the building user. This permits cross-user privilege escalation, reading source and secrets, supply-chain tampering with build output, or disrupting builds. Default Windows per-user temporary directories are protected by ACLs and are not affected. Deployer-selected insecure cache locations are outside the vulnerability's scope. This issue is fixed in versions 2025.1.18, 2026.0.25 and 2026.1.19.
📍 영향받는 시스템
Metalama.Framework/Metalama.Tool 2025.1.18 미만, 2026.0.25 미만, 2026.1.19 미만 버전 (Linux/macOS, 공유 머신 또는 CI/빌드 에이전트)
⚔️ 공격 벡터
로컬 비특권 사용자가 예측 가능한 임시 디렉터리 구조를 미리 만들고 악성 DLL과 일치하는 마커 파일을 배치하면, 상위 권한 빌드 시 해당 아티팩트가 실행됨
🛡️ 대응 방법
Metalama.Framework 및 Metalama.Tool을 2025.1.18, 2026.0.25, 2026.1.19 이상으로 업데이트하고, 빌드 머신의 임시 디렉터리를 신뢰할 수 있는 사용자 전용 경로로 제한
🔧 검증 코드
출력된 Metalama 패키지 버전이 2025.1.18, 2026.0.25, 2026.1.19 중 해당 브랜치의 수정 버전 이상이면 취약하지 않으며, 그보다 낮으면 취약한 버전입니다.
dotnet list package 2>/dev/null | grep -i metalama