Funkcje ToASCII i ToUnicode w pakiecie idna języka Go nieprawidłowo akceptują etykiety zakodowane w formacie Punycode, które dekodują się do etykiet zawierających wyłącznie znaki ASCII. Błąd ten może prowadzić do privilege escalation w aplikacjach wykorzystujących ten pakiet do kontroli dostępu na podstawie nazw hostów.
▸ Pokaż oryginał (EN)
The ToASCII and ToUnicode functions incorrectly accept Punycode-encoded labels that decode to an ASCII-only label. For example, ToUnicode("xn--example-.com") incorrectly returns the name "example.com" rather than an error. This behavior can lead to privilege escalation in programs using the idna package. For example, a program which performs privilege checks on the ASCII hostname may reject "example.com" but permit "xn--example-.com". If that program subsequently converts the ASCII hostname to Unicode, it will inadvertently permits access to the Unicode name "example.com".
Funkcje ToASCII i ToUnicode błędnie przetwarzają nieprawidłowe etykiety Punycode — przykładowo wywołanie ToUnicode("xn--example-.com") zwraca wartość "example.com" zamiast błędu. Aplikacja może odrzucić bezpośrednie żądanie dla "example.com" na etapie weryfikacji uprawnień, lecz przepuścić żądanie dla "xn--example-.com", ponieważ te dwie formy są traktowane jako różne nazwy. Jeśli aplikacja następnie konwertuje zaakceptowaną formę Punycode do Unicode, otrzymuje "example.com" i nieświadomie przyznaje dostęp do zasobu, który miał być chroniony.
Atakujący uwierzytelniony z niskimi uprawnieniami może ominąć mechanizmy kontroli dostępu oparte na nazwach hostów i uzyskać nieuprawniony dostęp do zasobów lub funkcji zastrzeżonych dla innych użytkowników bądź administratorów.
Należy zastosować patche dostępne u producenta zgodnie z referencjami (https://go.dev/cl/767220, https://go.dev/issue/78760, https://groups.google.com/g/golang-announce/c/iI-mYSI0lu8). Zaleca się również przegląd kodu aplikacji pod kątem miejsc, gdzie wyniki funkcji ToASCII i ToUnicode są wykorzystywane w logice kontroli dostępu.
Aplikacje napisane w języku Go korzystające z pakietu idna do przetwarzania lub walidacji nazw domenowych; szczegółowe informacje o wersjach dostępne w referencjach producenta (pkg.go.dev/vuln/GO-2026-5026).
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:NGolang Net
APPGolang< 0.55.0
Powiązane podatności
The html package (aka x/net/html) through 2018-09-25 in Go mishandles <math><template><mn><b></template>, lead...
The html package (aka x/net/html) through 2018-09-25 in Go mishandles <svg><template><desc><t><svg></template>...
The html package (aka x/net/html) through 2018-09-25 in Go mishandles <table><math><select><mi><select></table...
The html package (aka x/net/html) through 2018-09-17 in Go mishandles <template><tBody><isindex/action=0>, lea...
The html package (aka x/net/html) through 2018-09-17 in Go mishandles <math><template><mo><template>, leading ...