Wysoka

OneUptime has broken access control in GitHub App installation flow that allows unauthorized project binding

  • Ujawniono: 09.03.2026
  • Aktualizacja: 11.10.2026 10:22

Summary

OneUptime's GitHub App callback trusts attacker-controlled state and installation_id values and updates Project.gitHubAppInstallationId with isRoot: true without validating that the caller is authorized for the target project. This allows an attacker to overwrite another project's GitHub App installation binding.

Related GitHub endpoints also lack effective authorization, so a valid installation ID can be used to enumerate repositories and create CodeRepository records in an arbitrary project.

Details

The callback decodes unsigned base64 JSON from state and uses the embedded projectId directly:

It then writes the supplied installation_id into the target project with root privileges:

ts
await ProjectService.updateOneById({
  id: new ObjectID(projectId),
  data: { gitHubAppInstallationId: installationId },
  props: { isRoot: true },
});

The userId in state is only checked for presence, not authenticity:

The install flow also generates state as plain base64 JSON, not a signed or session-bound token:

The follow-on endpoints are also vulnerable:

PoC

Minimal proof of unauthorized project tampering:

bash
STATE=$(printf '%s' '{"projectId":"<victim-project-uuid>","userId":"x"}' | base64 | tr -d '\n')
curl -isk "https://<host>/api/github/auth/callback?installation_id=999999999&state=${STATE}"

Expected result:

  • Server returns a 302 redirect to /dashboard/<victim-project-uuid>/code-repository?installation_id=999999999
  • The target project's gitHubAppInstallationId is overwritten

Impact

  • Unauthorized modification of Project.gitHubAppInstallationId
  • Temporary GitHub integration breakage if a bogus installation ID is set
  • Cross-project binding of attacker-controlled GitHub App installations
  • Repository metadata disclosure for a supplied valid installation ID
  • Unauthorized creation of CodeRepository records in arbitrary projects

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Paczka npm @oneuptime/common < 10.0.19 10.0.19

Odnośniki

Ocena CVSS 8.6/10
Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L
Słabość (CWE)
CWE-345, CWE-639, CWE-862
Platforma
npm
Paczka
@oneuptime/common
Ujawniono
09.03.2026
Aktualizacja
11.10.2026 10:22

Źródła i licencje

OSV / GitHub Advisory Database - GHSA-656w-6f6c-m9r6 - CC BY 4.0

Historia podatności: @oneuptime/common

Wszystkie opisane podatności tej paczki (Paczka npm), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (11) w archiwum
Wszystkich wpisów
11
Pierwsza → ostatnia
11.2025 03.2026
Bez poprawki
1
Wykorzystywana w atakach
0

Rozkład istotności

  • Krytyczna 6
  • Wysoka 3
  • Średnia 2

Ujawnienia w latach

  1. 2025: 2
  2. 2026: 9
Istotność:
  1. Krytyczna · 9.9 CVE-2026-30957 < 10.0.21 10.0.21
  2. OneUptime has broken access control in GitHub App installation flow that allows unauthorized project binding ten wpis
    Wysoka · 8.6 CVE-2026-30920 < 10.0.19 10.0.19
  3. Krytyczna · 9.9 CVE-2026-30921 < 10.0.20 10.0.20
  4. Wysoka CVE-2025-65966 < 9.1.0 9.1.0

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.