flawopen.com/보안 사고/GitLab CVE-2026-85706

CVE-2026-85706: 인증되지 않은 단 한 번의 요청으로 GitLab 서버 내 모든 파일을 읽어낸 취약점

Critical — CVSS 10.0 CWE-22: Path Traversal Disclosed September 2026
쉬운 설명 (ELI5)

도서관에 서가 번호를 적은 종이를 내면 책을 가져다주는 접수처가 있습니다. 직원은 대출 카드를 확인하고 열람실 서가에서만 책을 가져와야 하지만 둘 다 하지 않았습니다. 누구나 종이에 '도서관장 비밀 금고 서류'라고 적어 내밀면 직원이 금고 서류를 통째로 가져다주었습니다.

The load-bearing idea is that you cannot validate a path by inspecting the string. Blocklisting ../ fails against encoded variants, absolute paths, and symlinks. The only durable check is to fully resolve the path — following every .. and every symlink — and then assert that the resolved result is still underneath the directory you intended.

Why patching alone was not enough

This is the part teams got wrong. An arbitrary file read on a GitLab server does not just expose source code — it exposes the secrets that the server keeps on disk. Depending on configuration, that can include the instance's shell secret file, SSH host keys, deploy tokens, CI/CD variables and database credentials.

Once those have potentially been read, upgrading closes the hole but leaves the attacker holding valid credentials. Any instance that was internet-reachable and unpatched during the exposure window should be treated as having leaked its secrets, and those secrets rotated.

The transferable lesson

The interesting thing about this CVE is not that GitLab shipped a path traversal — it is how ordinary the ingredients were. A parameter named path, a join against a base directory, and an endpoint whose authentication requirement was assumed rather than enforced. Each of those individually appears in a very large number of codebases. The lesson is that path handling and authentication should both be checked at the boundary, mechanically, rather than inherited from the assumption that the surrounding framework already did it.

FAQ

Was gitlab.com affected?

The advisory scopes the issue to self-managed Community and Enterprise Edition instances. GitLab's own hosted platform was addressed by the vendor directly; the urgent action applies to organisations running their own servers.

Does this allow code execution?

Not directly — the primitive is an arbitrary file read. In practice that is often enough to reach code execution indirectly, because the files it exposes include credentials and signing secrets that unlock other systems.

Why CVSS 10.0 for a read-only bug?

The score reflects that it is remotely reachable, needs no privileges, needs no user interaction, is trivial to exploit, and — because the exposed secrets grant control over other components — its impact is judged to extend beyond the vulnerable component itself.

Related reading

출처 및 공식 보안 권고