Crater - Cross-Company IDOR on Notes via Missing Company-Ownership Check in NotePolicy
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | ||||||
|---|---|---|---|---|---|---|---|---|---|
| crater-invoice | crater | unknown |
|
No data.
No data.
| Vendor | Product | Versions | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Crater-invoice-inc | Crater |
|
No CVSS v4.0
No CVSS v3.0
No CVSS v2
This CVE is not in the KEV list.
Exploit prediction score: < 1% (0.374% probability within 30 days)
| Link | Providers |
|---|---|
| https://github.com/crater-invoice/crater |
|
| Type | Values Removed | Values Added |
|---|---|---|
| Description | Crater's NotePolicy checks only a blanket Bouncer ability (manage-all-notes / view-all-notes) with no company-ownership comparison, unlike InvoicePolicy and other sibling policies which additionally verify $user->hasCompany($model->company_id). NotesController's show(), update(), and destroy() actions authorize via $this->authorize('view notes'/'manage notes') without passing the target Note model, and Note's company-scoping (scopeWhereCompany) is applied only in the list endpoint, not in show/update/destroy. Any authenticated user of one company can read, edit, or delete another company's notes by ID. This is a distinct finding from the previously reported CustomerPolicy company-ownership omission (a different policy class and controller). | Crater's NotePolicy checks only a blanket Bouncer ability (manage-all-notes / view-all-notes) with no company-ownership comparison, unlike InvoicePolicy and other sibling policies which additionally verify ->hasCompany(->company_id). Any authenticated user of one company can read, edit, or delete another company's notes by ID. |
| Type | Values Removed | Values Added |
|---|---|---|
| Title | Crater: Cross-Company IDOR on Notes via Missing Company-Ownership Check in NotePolicy | Crater - Cross-Company IDOR on Notes via Missing Company-Ownership Check in NotePolicy |
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Crater-invoice-inc
Crater-invoice-inc crater |
|
| Vendors & Products |
Crater-invoice-inc
Crater-invoice-inc crater |
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
| Type | Values Removed | Values Added |
|---|---|---|
| Description | Crater's NotePolicy checks only a blanket Bouncer ability (manage-all-notes / view-all-notes) with no company-ownership comparison, unlike InvoicePolicy and other sibling policies which additionally verify $user->hasCompany($model->company_id). NotesController's show(), update(), and destroy() actions authorize via $this->authorize('view notes'/'manage notes') without passing the target Note model, and Note's company-scoping (scopeWhereCompany) is applied only in the list endpoint, not in show/update/destroy. Any authenticated user of one company can read, edit, or delete another company's notes by ID. This is a distinct finding from the previously reported CustomerPolicy company-ownership omission (a different policy class and controller). | |
| Title | Crater: Cross-Company IDOR on Notes via Missing Company-Ownership Check in NotePolicy | |
| Weaknesses | CWE-639 | |
| References |
| |
| Metrics |
cvssV3_1
|