Skip to content

Remove legacy unauthenticated Pipedrive actions - #121

Merged
sistrall merged 1 commit into
mainfrom
c17/chore/remove-legacy-pipedrive-actions
Sep 18, 2026
Merged

sistrall merged 1 commit into
mainfrom
c17/chore/remove-legacy-pipedrive-actions

Conversation

@sistrall

Copy link
Copy Markdown
Contributor

Delete the two legacy Astro actions pipedrive.createSalesLead and pipedrive.createPartnerProgramLead and drop the pipedrive group from the exported action manifest.

These were replaced by the Turnstile-protected forms.* actions in "New forms management" (699fb3a) but were never removed. They accepted a token field that was never validated and ran the full Pipedrive write chain (organization, person, lead, note) with the server-side PIPEDRIVE_TOKEN, so any anonymous POST to /_actions/pipedrive.* could inject records into the CRM. An external researcher reported this; see the Basecamp card https://app.basecamp.com/5656352/buckets/33604800/card_tables/cards/10300577258.

A code search found no caller of either action. src/actions/pipedrive/utils.ts and PipedriveClient.ts stay, since the form actions import them.

After deploy the two /_actions/pipedrive.* URLs return 404 like any unknown action.

Validation: astro check passes with 0 errors and 0 warnings (881 files).

Not covered here: auditing Pipedrive for junk records created via these endpoints since November 2025.

`pipedrive.createSalesLead` and `pipedrive.createPartnerProgramLead` were
superseded by the `forms.*` actions in "New forms management" (699fb3a) but
stayed exported in the public action manifest. They accepted a `token` field
that was never validated and wrote directly to Pipedrive with the server
token, so any anonymous caller could create organizations, people, leads
and notes in the CRM. No frontend code calls them anymore.

Keep `pipedrive/utils.ts` and `PipedriveClient.ts`, which the form actions
still use.
@sistrall sistrall self-assigned this Sep 18, 2026
@sistrall
sistrall merged commit ccb0599 into main Sep 18, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant