CVE-2026-71272
WysokieCVSS 8.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 6 - wyżej niż 6% wszystkich znanych CVE
Streszczenie
Funkcja safeDialContext w webhookach Memos rozwiązuje nazwę hosta docelowego przez net.DefaultResolver.LookupHost i waliduje wynikowe adresy IP względem zakresów zastrzeżonych, ale następnie łączy się przez net.JoinHostPort(host, port) używając oryginalnej nazwy hosta, a nie już zwalidowanego adresu IP.
Ocena ryzyka
Mimo walidacji IP, połączenie jest nawiązywane z oryginalną nazwą hosta, co może pozwolić na atak typu DNS rebinding i ominięcie zabezpieczeń SSRF.
Rekomendacja
Należy używać zwalidowanego adresu IP do nawiązywania połączenia zamiast oryginalnej nazwy hosta, aby zapobiec ponownemu rozwiązywaniu DNS.
Inne podatności w Memos
Zobacz wszystkie- CVE-2026-82476Średnie
Memos do wersji 0.30.0 pomija zakres adresów 100.64.0.0/10 (carrier-grade NAT) w ochronie SSRF w swoim pobieraczu metadanych linków, co pozwala nieuwierzytelnionym atakującym ominąć walidację IP. Atakujący mogą sprawić, że serwer będzie wysyłać żądania do wewnętrznych hostów w tym zakresie, w tym do usług metadanych chmury, i odczytywać tytuły stron oraz opisy.
- CVE-2026-75110Krytyczne
MemOS to system operacyjny pamięci dla LLM i agentów AI. W środowiskach, gdzie uwierzytelnianie jest włączone (AUTH_ENABLED=true), ale zmienna środowiskowa INTERNAL_SERVICE_SECRET (bez wartości domyślnej) nie jest ustawiona, funkcja is_internal_request() w src/memos/api/middleware/auth.py zawodzi w trybie otwartym: os.getenv("INTERNAL_SERVICE_SECRET") zwraca None, a żądanie bez nagłówka X-Internal-Service również daje None, więc porównanie None == None jest prawdziwe. Żądanie jest traktowane jako zaufany wewnętrzny podmiot i otrzymuje zakresy: ["all"]. W rezultacie nieuwierzytelniony zdalny atakujący może uzyskać dostęp do endpointów zarządzania kluczami API administratora, aby tworzyć klucze API dla dowolnego użytkownika, wyliczać klucze, odwoływać klucze i generować klucz główny dla trwałego uprzywilejowanego dostępu, a także do wszystkich endpointów danych.
- CVE-2026-71271Wysokie
Funkcja isReservedIP w Memos (internal/webhook/validate.go) sprawdza adres IP względem listy zarezerwowanych CIDR, która pomija zakres 0.0.0.0/8 i nie wywołuje ip.IsUnspecified, w przeciwieństwie do poprawnie zaimplementowanej funkcji isInternalIP.
- CVE-2026-30586Średnie
Podatność na Cross Site Scripting w usememos Memos w wersji 0.26.0 umożliwia zdalnemu atakującemu uzyskanie poufnych informacji poprzez strony SANITIZE_SCHEMA, Memo Rendering Component oraz Public/Private Memo View.
Oryginalny opis (angielski, źródło NVD)
Memos' webhook dispatch function safeDialContext (internal/webhook/webhook.go) resolves the target hostname via net.DefaultResolver.LookupHost and validates the resulting IPs against reserved ranges, but then dials net.JoinHostPort(host, port) using the original hostname rather than the already-validated IP address.

