CRITICAL✓ PATCH🇬🇧 English

CVE-2023-29405

RCE w Go — przemycanie flag linkera przez cgo LDFLAGS

CVSS 9.8v3.1pub. 2023-06-08upd. 2025-01-06

Podatność w narzędziu go (kompilator gccgo) umożliwia wykonanie dowolnego kodu podczas budowania aplikacji korzystających z cgo. Atakujący może dostarczyć złośliwy moduł, który przy budowaniu projektu uruchomi niebezpieczny kod na maszynie dewelopera lub serwera CI/CD.

Pokaż oryginał (EN)

The go command may execute arbitrary code at build time when using cgo. This may occur when running "go get" on a malicious module, or when running any other command which builds untrusted code. This is can by triggered by linker flags, specified via a "#cgo LDFLAGS" directive. Flags containing embedded spaces are mishandled, allowing disallowed flags to be smuggled through the LDFLAGS sanitization by including them in the argument of another flag. This only affects usage of the gccgo compiler.

🤖 Analiza AI
Jak działa

Dyrektywa '#cgo LDFLAGS' pozwala na przekazywanie flag do linkera podczas kompilacji kodu C w projekcie Go. Mechanizm sanityzacji flag LDFLAGS zawiera błąd w obsłudze flag zawierających osadzone spacje — niedozwolone flagi mogą zostać przemycone jako argument innej, pozornie dozwolonej flagi. Dzięki temu atakujący, kontrolując kod źródłowy modułu (np. złośliwy pakiet pobrany przez 'go get'), może przekazać do linkera dowolne flagi i tym samym wywołać wykonanie arbitralnego kodu w czasie kompilacji. Podatność dotyczy wyłącznie kompilatora gccgo.

Skutki

Atakujący może wykonać dowolny kod na maszynie, która buduje niezaufany kod — w szczególności podczas pobierania i kompilacji złośliwego modułu Go. Może to prowadzić do pełnego przejęcia kontroli nad środowiskiem deweloperskim lub pipeline'em CI/CD.

Mitygacja

Należy zastosować patche dostępne u producenta zgodnie z referencjami (m.in. https://go.dev/cl/501224). Zaleca się unikanie budowania niezaufanego kodu Go z użyciem kompilatora gccgo do czasu zastosowania poprawki. Należy monitorować komunikaty bezpieczeństwa projektu Go (golang-announce).

Kogo dotyczy

Golang Go (kompilator gccgo) oraz Fedoraproject Fedora — konkretne wersje wskazane w referencjach producenta

Uwagi

Podatność dotyczy wyłącznie kompilatora gccgo — standardowy kompilator gc (gc toolchain) nie jest podatny. Wektor ataku obejmuje typowe operacje deweloperskie takie jak 'go get', co zwiększa ryzyko nieświadomego uruchomienia złośliwego kodu.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Fedora Project Fedora

    OS
    Fedoraproject
    38
  • Golang Go

    APP
    Golang
    < 1.19.101.20.0 – 1.20.5 (bez)
🟢
PATCH DOSTĘPNY
Aktualizacja od producenta gotowa. Wdrożenie w ramach standardowego cyklu.
Tagi
RCE
CWE
Referencje

Powiązane podatności

CVE-2024-4577CRITICAL9.8⚠ KEVPL ✓ten sam produkt

PHP CGI argument injection – RCE na Windows przez mechanizm Best-Fit

CVE-2024-5274CRITICAL9.6⚠ KEVPL ✓ten sam produkt

Type Confusion w V8 (Google Chrome) — RCE przez spreparowaną stronę HTML

CVE-2024-4947CRITICAL9.6⚠ KEVPL ✓ten sam produkt

Type Confusion w silniku V8 Chrome — zdalne wykonanie kodu (RCE)

CVE-2024-4671CRITICAL9.6⚠ KEVPL ✓ten sam produkt

Use-after-free w Google Chrome Visuals umożliwiający ucieczkę z sandbox

CVE-2023-6345CRITICAL9.6⚠ KEVPL ✓ten sam produkt

Integer overflow w Skia w Google Chrome — sandbox escape