WACRM: Service-role routes missing a role check
WACRM is a self-hostable CRM template for WhatsApp. In version 0.7.0 and earlier, WACRM flow and automation write routes authenticate account viewers but do not enforce the agent role before using a service-role database client that bypasses row-level security. In src/app/api/flows/[id]/route.ts, src/app/api/flows/[id]/activate/route.ts, and src/app/api/flows/route.ts, a viewer can create, edit, activate, or delete flows because membership-only checks are followed by service-role writes. In src/app/api/automations/route.ts and src/app/api/automations/engine/route.ts, a viewer can create active automations and trigger outbound WhatsApp actions without the role required by the underlying write policies. This can permit unauthorized workflow changes, destructive flow deletion, and outbound actions from a role intended to be read-only. This vulnerability is fixed with commit 03e851bea56dcf6bb21ff1b80ba531372bf3269f.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-77239
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 2 Nov 2026, 20:10 UTC · Revision 1
Source evidence
WACRM: Service-role routes missing a role check
core-osv · Original sourcePublished 18 Sept 2026, 16:45 UTC
WACRM is a self-hostable CRM template for WhatsApp. In version 0.7.0 and earlier, WACRM flow and automation write routes authenticate account viewers but do not enforce the agent role before using a service-role database client that bypasses row-level security. In src/app/api/flows/[id]/route.ts, src/app/api/flows/[id]/activate/route.ts, and src/app/api/flows/route.ts, a viewer can create, edit, activate, or delete flows because membership-only checks are followed by service-role writes. In src/app/api/automations/route.ts and src/app/api/automations/engine/route.ts, a viewer can create active automations and trigger outbound WhatsApp actions without the role required by the underlying write policies. This can permit unauthorized workflow changes, destructive flow deletion, and outbound actions from a role intended to be read-only. This vulnerability is fixed with commit 03e851bea56dcf6bb21ff1b80ba531372bf3269f.
osv:CVE-2026-77239
Complete source record
{
"id": "d815b18834b678854d0dfa932f7ebb7d4b68c2b51a845323b036b983ee718126",
"url": "https://osv.dev/vulnerability/CVE-2026-77239",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "WACRM: Service-role routes missing a role check",
"summary": "WACRM is a self-hostable CRM template for WhatsApp. In version 0.7.0 and earlier, WACRM flow and automation write routes authenticate account viewers but do not enforce the agent role before using a service-role database client that bypasses row-level security. In src/app/api/flows/[id]/route.ts, src/app/api/flows/[id]/activate/route.ts, and src/app/api/flows/route.ts, a viewer can create, edit, activate, or delete flows because membership-only checks are followed by service-role writes. In src/app/api/automations/route.ts and src/app/api/automations/engine/route.ts, a viewer can create active automations and trigger outbound WhatsApp actions without the role required by the underlying write policies. This can permit unauthorized workflow changes, destructive flow deletion, and outbound actions from a role intended to be read-only. This vulnerability is fixed with commit 03e851bea56dcf6bb21ff1b80ba531372bf3269f.",
"evidence": "osv:CVE-2026-77239",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-77239",
"aliases": [
"CVE-2026-77239",
"GHSA-34q7-fv77-625j"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/arnasdon/wacrm",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "03e851bea56dcf6bb21ff1b80ba531372bf3269f"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"fixed": "03e851bea56dcf6bb21ff1b80ba531372bf3269f"
}
],
"source": "REFERENCES_COMMIT"
}
]
}
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-77239.json"
}
}
],
"modified": "2026-10-28T02:30:23.180838333Z",
"provider": "osv",
"references": [
"https://github.com/ArnasDon/wacrm/security/advisories/GHSA-34q7-fv77-625j",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/77xxx/CVE-2026-77239.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-77239",
"https://github.com/ArnasDon/wacrm/commit/03e851bea56dcf6bb21ff1b80ba531372bf3269f",
"https://github.com/ArnasDon/wacrm/pull/351"
],
"provider_metadata": {
"cwe_ids": [
"CWE-285"
],
"cna_assigner": "GitHub_M",
"unresolved_ranges": [
{
"extracted_events": [
{
"range": [
{
"last_affected": "0.7.0"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
}
]
},
{
"extracted_events": [
{
"range": [
{
"last_affected": "0.7.0"
}
],
"source": "DESCRIPTION"
}
]
}
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/77xxx/CVE-2026-77239.json"
}
},
"related_cves": [
{
"value": "CVE-2026-77239",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 489648,
"published_at": "2026-09-18T16:45:27.574+00:00"
}