Thus this could be a missing or misconfigured log filter for PII.
Way too verbose logging. Should never have logged that.
The logging database (elasticsearch) was exposed to the internet without authentication. Free credentials for all.
It's interesting to observe the contrast between this and "We're a SaaS startup and we log every.single. RPC request across all services forever including performance data".
However you MUST NOT logs cookies or headers or content, because these can contain private information.
Last but not least, developers should never pass tokens/passwords in the request path because it will be systematically logged and leaked /api/token/abcdec. That should go into a header or the body.
If you believe you're verifying that the email went to your user, this isn't enough. Lots of systems parse URLs out of emails and follow them, you probably want to look for a a pre-existing session cookie, or insist the user log in from the verification page and confirm this is what they wanted.
Otherwise you've merely got two unrelated facts:
1. Some user of your system (maybe happy_pancake) says bob@example.com is their email address
2. Mail to bob@example.com is received by a machine or person which reads web pages.
It would be foolish to conclude from these facts that happy_pancake is actually bob@example.com or that bob@example.com wants to use your service.
For example: Accidentally open to the internet log server(as above). Attacker sends password reset request. Attacker checks log to steal token. Attacker now has stolen account until owner can't log in and does reset, or perhaps semi-permanently if attacker steals all tokens for said account and invalidates them before owner can use them.
Hmm, but where is this password stored? This sounds like exactly what they were doing!