CVE-2026-76901
ŚrednieCVSS 5.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 32 - wyżej niż 32% wszystkich znanych CVE
Streszczenie
CordysCRM przed wersją 1.7.4 zawiera podatność w trasach GET /pool/lead/get/{id} i GET /pool/account/get/{id}, które używają jedynie podstawowych kontroli uprawnień odczytu bez powiązania z zasobem CsPermission, co pozwala uwierzytelnionemu użytkownikowi z uprawnieniami CLUE_MANAGEMENT_POOL:READ lub CUSTOMER_MANAGEMENT_POOL:READ na dostęp do rekordów należących do innych użytkowników, działów lub organizacji. Ujawniane dane obejmują nazwy kontaktów, numery telefonów, informacje o właścicielu i działy oraz wartości pól niestandardowych.
Ocena ryzyka
Ryzyko obejmuje nieautoryzowany dostęp do danych klientów i potencjalnych leadów, co może prowadzić do naruszenia poufności i integralności danych.
Rekomendacja
Zaleca się aktualizację CordysCRM do wersji 1.7.4 lub nowszej oraz wdrożenie kontroli dostępu opartej na zakresie danych (resourceId binding) dla wszystkich operacji odczytu.
Inne podatności w CordysCRM
Zobacz wszystkie- CVE-2026-63647Krytyczne
CordysCRM to otwarty system CRM oparty na AI, który wspiera prywatne wdrożenia. W wersjach przed 1.7.2 SseController udostępnia anonimowe punkty końcowe /sse/subscribe, /sse/broadcast i /sse/close, ponieważ ShiroFilter.addPublicPathFilters zezwala na ścieżki SSE, a punkty końcowe ufają kontrolowanemu przez wywołującego identyfikatorowi userId zamiast wyprowadzać tożsamość z uwierzytelnionego podmiotu. Nieuwierzytelniony wywołujący może użyć /sse/subscribe do odczytu zdarzeń przepływu pracy innego użytkownika, żądań zatwierdzenia, wzmianek i alertów, użyć /sse/broadcast do wstrzyknięcia komunikatów SYSTEM_HEARTBEAT do strumienia innego użytkownika lub użyć /sse/close do zakończenia kanału innego użytkownika. Podatność została naprawiona w wersji 1.7.2.
- CVE-2026-108705Średnie
CordysCRM do wersji 1.9.3 zawiera brak autoryzacji w punkcie końcowym POST /custom-form/data/import, co pozwala uwierzytelnionym użytkownikom na importowanie danych do dowolnego formularza niestandardowego za pomocą customFormId. Atakujący z niskimi uprawnieniami mogą przesyłać pliki Excel z typem importu ADD lub UPDATE, aby tworzyć rekordy lub nadpisywać istniejące rekordy w formularzach, których nie mogą zarządzać.
- CVE-2026-108704Średnie
CordysCRM do wersji 1.9.3 zawiera podatność na obejście autoryzacji, która pozwala użytkownikom z niskimi uprawnieniami na pominięcie kontroli uprawnień poprzez ustawienie pola owner na własny identyfikator użytkownika. Atakujący mogą wysyłać żądania do punktów końcowych follow/record/add, aby dodawać rekordy uzupełniające i nadpisywać follow_time oraz follower dla dowolnego znanego klienta, szansy lub okazji.
- CVE-2026-108703Średnie
CordysCRM do wersji 1.9.3 zawiera brak autoryzacji w punkcie końcowym POST /approval-resource/push, co pozwala uwierzytelnionym użytkownikom na przesyłanie dowolnych zasobów do zatwierdzenia bez sprawdzania własności. Atakujący z niskimi uprawnieniami mogą podać dowolne wartości resourceId dla kontraktów, faktur, wycen lub zamówień, aby zmienić ich status zatwierdzenia i odczytać szczegóły zatwierdzenia.
- CVE-2026-108702Średnie
1Panel-dev CordysCRM do wersji 1.9.3 nie sprawdza uprawnień PROCESS_SETTING na punkcie końcowym POST /approval-flow/webhook/test, co pozwala każdemu uwierzytelnionemu użytkownikowi na wyzwalanie żądań po stronie serwera do adresów URL dostarczonych przez atakującego. Atakujący mogą przekierować żądania GET z kontrolowanego hosta, aby ominąć SSRFValidator i badać wewnętrzne adresy poprzez wyniki sukcesu lub porażki.
- CVE-2026-108701Średnie
1Panel-dev CordysCRM przed wersją 1.9.2 zawiera brak autoryzacji w obsłudze sortModule w ContractController dla POST /contract/sort, który nie ma żadnej adnotacji uprawnień. Uwierzytelnieni użytkownicy bez uprawnień do aktualizacji kontraktów mogą podać dragNodeId, stage i wartości pól, aby modyfikować dowolny kontrakt, w tym kontrakty w innych organizacjach.
- CVE-2026-108700Średnie
1Panel-dev CordysCRM przed wersją 1.9.2 zawiera brak autoryzacji, który pozwala uwierzytelnionym użytkownikom na listowanie tytułów biznesowych poprzez wywołanie POST /field/source/business-title bez kontroli uprawnień. Użytkownicy bez uprawnień CONTRACT_BUSINESS_TITLE_READ mogą pobierać dane podmiotów fakturowania organizacji, ujawniając numery identyfikacji podatkowej, numery kont bankowych, banki otwierające, adresy rejestracyjne i numery telefonów.
- CVE-2026-108692Średnie
1Panel-dev CordysCRM od wersji 1.9.0 przed 1.9.2 zawiera brak autoryzacji w ośmiu punktach końcowych ModuleFieldController /field/source, które nie mają kontroli uprawnień. Uwierzytelnieni użytkownicy bez uprawnień modułu mogą przeglądać dane organizacji dotyczące leadów, kontaktów, wycen, kontraktów, planów płatności, rekordów płatności, zamówień i faktur należących do innych użytkowników.
- CVE-2026-76902Średnie
CordysCRM przed wersją 1.7.4 zawiera podatność w trasach /attachment/preview/{id} i /pic/preview/{id}, które są skonfigurowane jako anonimowe i wywołują AttachmentService.getResource bez sprawdzania własności, organizacji lub uprawnień. Nieuwierzytelniony atakujący, który zgadnie lub zaobserwuje identyfikator wygenerowany przez IDGenerator.nextStr, może pobrać pliki przesłane przez użytkowników z innych organizacji.
- CVE-2026-76900Średnie
CordysCRM w wersji 1.7.3 zawiera podatność SSRF w ApprovalResourceService.sendWebHook, która odczytuje WebHookConfig.webHookUrl z konfiguracji węzła zatwierdzenia i przekazuje go do HttpClientUtils bez walidacji SSRF. Użytkownik z uprawnieniami PROCESS_SETTING_ADD może skonfigurować wewnętrzny URL przez POST /approval-flow/add, a serwer wykona żądanie do tego URL podczas wykonywania akcji zatwierdzenia, umożliwiając dostęp do metadanych chmury, rozpoznanie sieci wewnętrznej i interakcję z wewnętrznymi usługami.
Oryginalny opis (angielski, źródło NVD)
CordysCRM is an open source AI-powered customer relationship management system that supports private deployment. Prior to 1.7.4, GET /pool/lead/get/{id} in PoolClueController.get and GET /pool/account/get/{id} in PoolCustomerController.get use bare pool-read permission checks without the CsPermission resourceId binding that enforces per-record data scope. An authenticated user with the ordinary CLUE_MANAGEMENT_POOL:READ or CUSTOMER_MANAGEMENT_POOL:READ permission can supply another record's id and cause unscoped primary-key getters to return leads or accounts owned by other users, departments, or organizations. Exposed data includes contact names, phone numbers, owner and department attribution, and custom field values. This issue is fixed in version 1.7.4.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

