CVE-2026-71271
WysokieCVSS 8.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 15 - wyżej niż 15% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może wykorzystać tę lukę do wysyłania webhooków na adresy IP, które powinny być zablokowane, co może prowadzić do nieautoryzowanych działań lub ataków SSRF.
Rekomendacja
Zaktualizuj Memos do wersji z poprawką lub ręcznie dodaj zakres 0.0.0.0/8 do listy zarezerwowanych i sprawdzaj adresy nieokreślone.
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-71272Wysokie
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.
- 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 URL validation, isReservedIP (internal/webhook/validate.go), checks a candidate IP against a reservedCIDRs list that omits 0.0.0.0/8 and never calls ip.IsUnspecified — unlike the correctly implemented sibling function isInternalIP in internal/httpgetter/html_meta.go, which does.

