CVE-2026-59979: YosemiteCrew: Missing organization authorization on service and PMS library/template routes

Published Oct 28, 2026
·
Updated

YosemiteCrew provides organization-based service and task management. In the source-reported affected main and dev snapshots, YosemiteCrew's service and PMS task-library/template routes omit organization and permission checks. authorizeCognito in apps/backend/src/middlewares/auth.ts sets the authenticated user's ID but does not provide the withOrgPermissions() and requirePermission(...) checks used by protected siblings. In apps/backend/src/routers/service.router.ts, PATCH /fhir/v1/service/:id and DELETE /fhir/v1/service/:id are authentication-only, while GET /fhir/v1/service/:id has no authentication middleware. The trace through apps/backend/src/controllers/web/service.controller.ts to apps/backend/src/services/service.service.ts passes a global record ID into ServiceModel.findById(oid) without an organisationId filter. In apps/backend/src/routers/task.router.ts, PUT /v1/task/pms/library/:libraryId, POST /v1/task/pms/templates, PATCH /v1/task/pms/templates/:templateId and DELETE /v1/task/pms/templates/:templateId likewise lack organization/role enforcement. Any registered platform user, including a patient/companion-app account, can modify or delete another organization's service catalogue and PMS task-library/template data, affecting bookings and billing; service records can additionally be read without authentication. An earlier security change protected create routes but left these sibling operations exposed. A fixed release cannot be established from the available evidence.

Affected Software

1 affected component
YosemiteCrew YosemiteCrew

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Compensating control

    Enforce organization and permission authorization on the service and PMS task-library/template routes: add the `withOrgPermissions()` and `requirePermission(...)` checks used by protected sibling routes to `PATCH /fhir/v1/service/:id`, `DELETE /fhir/v1/service/:id`, and `GET /fhir/v1/service/:id`, and to `PUT /v1/task/pms/library/:libraryId`, `POST /v1/task/pms/templates`, `PATCH /v1/task/pms/templates/:templateId`, and `DELETE /v1/task/pms/templates/:templateId`.

  2. Compensating control

    Apply organization scoping when retrieving services: pass an `organisationId` filter to `ServiceModel.findById(oid)` in the service controller/service path so a global record ID cannot access another organization's service record.

Event History

Oct 28, 2026
CVE Published
via MITRE·03:36 PM
Data Sourced
via MITRE·03:36 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Who can make unauthorized changes through the affected endpoints?

Any registered platform user can modify or delete affected service records and PMS task-library/template resources without organization or role enforcement. This includes patient or companion-app accounts.

2

Is authentication required for all affected service operations?

No. GET /fhir/v1/service/:id has no authentication middleware. PATCH and DELETE on /fhir/v1/service/:id require authentication, but do not enforce organization membership or permissions.

3

Why can this cross organization boundaries?

The affected service lookup uses a global record ID with ServiceModel.findById(oid) and does not filter by organisationId. The affected PMS library and template routes likewise lack organization and role checks.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203