{"id":"CVE-2026-100169","revision":null,"records":[{"revision":"3969fcedd1ca4b57a6a948619eddb5a6","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-100169","aliases":[],"title":"Account pre-hijacking in the Prowler API through email based social account linking without verification","description":"Improper Authentication in the social account linking path of the Prowler API in Prowler from 5.4.0 before 5.35.0 allows a remote unauthenticated attacker to obtain persistent access to the account of a user who has not yet registered, because ProwlerSocialAccountAdapter.pre_social_login() in api/src/backend/api/adapters.py links a Google or GitHub login to any existing local account that has the same email address as the one returned by the provider, without requiring that the address has been verified by the provider or on the existing account, and without any other check that both accounts belong to the same person. Self registration is open and the new account is usable at once, because UserViewSet.get_permissions() in api/src/backend/api/v1/views.py grants AllowAny to the create action, ACCOUNT_EMAIL_VERIFICATION is set to none in api/src/backend/config/settings/social_login.py, and the Django ModelBackend checks only the password and is_active, not the django-allauth EmailAddress record. An attacker who registers an email address before its owner keeps the password set at registration after the link is made, because sociallogin.connect() does not reset the password and does not disable the existing account, and the owner who later signs in with Google or GitHub is logged into the attacker's account. django-allauth makes the same email based link on its own, because SOCIALACCOUNT_EMAIL_AUTHENTICATION and SOCIALACCOUNT_EMAIL_AUTHENTICATION_AUTO_CONNECT are both set to True in the same settings module. This gives the attacker the cloud provider credentials, scan findings and tenant memberships held in the account.","state":0,"publishedAt":"2026-10-14T16:01:59.909+00:00","modifiedAt":"2026-10-16T15:31:52.042+00:00","affected":[{"ecosystem":"Vendor product","name":"Prowler","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"vendor\": \"Prowler\",\n                    \"product\": \"Prowler\",\n                    \"repo\": \"https://github.com/prowler-cloud/prowler\",\n                    \"modules\": [\n                        \"Prowler API\"\n                    ],\n                    \"programFiles\": [\n                        \"api/src/backend/api/adapters.py\",\n                        \"api/src/backend/config/settings/social_login.py\",\n                        \"api/src/backend/api/v1/views.py\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"status\": \"affected\",\n                            \"version\": \"5.4.0\",\n                            \"lessThan\": \"5.35.0\",\n                            \"versionType\": \"semver\"\n                        }\n                    ],\n                    \"defaultStatus\": \"unaffected\"\n                }"}],"metrics":[{"system":"CVSS 4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","score":7.6,"severity":"HIGH"}],"references":["https://github.com/prowler-cloud/prowler/commit/0f31f1a3c2daa05b4d77a78f451e3fbfb3fe3411","https://github.com/prowler-cloud/prowler/pull/12013","https://github.com/prowler-cloud/prowler/releases/tag/5.35.0","https://github.com/prowler-cloud/prowler/security/advisories/GHSA-h8m9-jgf8-vwvp","https://secur0.com/en/cna/cve-list/cve-2026-100169-prowler-account-pre-hijacking"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-100169","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-100169","identifiers":["CVE-2026-100169"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-11-09T10:04:34.0648037+00:00","complete":true,"records":1769,"lastAttemptAt":"2026-11-09T10:04:34.0648037+00:00","lastSuccessAt":"2026-11-09T10:04:34.2246806+00:00","error":null,"lastVerifiedAt":"2026-11-09T10:04:34.2246841+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-24e6fde7b744113daefb8f6135035fb8a5c69c9617c9c0d40574a0376532ffd3-959e97d06f32ad78d34e1b0ba6a6e5cd74265f5a3f17190fe2a4f93cc705e8ca","complete":true,"records":421341,"lastAttemptAt":"2026-11-09T10:02:25.7011931+00:00","lastSuccessAt":"2026-11-09T10:02:25.6766256+00:00","error":null,"lastVerifiedAt":"2026-11-09T10:02:25.7011931+00:00","snapshotPublishedAt":"2026-11-09T09:30:06+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-994943cd8cb046f49f56409fe0b1d8c6","complete":false,"records":13655,"lastAttemptAt":"2026-11-09T10:16:43.0170247+00:00","lastSuccessAt":"2026-11-09T10:16:43.013+00:00","error":"6 identifier lookups failed; latest failures include HTTP 403. Other identifiers were checked independently.","lastVerifiedAt":"2026-11-09T10:16:43.013+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13701,"expectedIdentifiers":13707,"failedIdentifiers":6},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-11-09T10:04:34.0648037+00:00","complete":true,"records":1096,"lastAttemptAt":"2026-11-09T10:04:34.0648037+00:00","lastSuccessAt":"2026-11-09T10:04:34.2253534+00:00","error":null,"lastVerifiedAt":"2026-11-09T10:04:34.2253535+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-4dc74a26d06148ffa8eb6751d602315d","complete":true,"records":13667,"lastAttemptAt":"2026-11-09T10:04:35.2758607+00:00","lastSuccessAt":"2026-11-09T10:04:35.272+00:00","error":null,"lastVerifiedAt":"2026-11-09T10:04:35.272+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13707,"expectedIdentifiers":13707,"failedIdentifiers":0},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-980593e6977a6d1b4fb1eed5a1ffe88a468736f89f0a06f710924ad59132c023","complete":true,"records":9914,"lastAttemptAt":"2026-11-09T10:04:28.5294921+00:00","lastSuccessAt":"2026-11-08T11:07:07.068788+00:00","error":null,"lastVerifiedAt":"2026-11-09T10:04:28.5294921+00:00","snapshotPublishedAt":"2026-11-08T11:02:46+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-fde804134ecdda0ddd5ff5c26ee1fff5a6fa659311f7ef2e51c6ad54964db0e2","complete":true,"records":1971,"lastAttemptAt":"2026-11-09T10:02:25.7473895+00:00","lastSuccessAt":"2026-11-06T19:03:17.0399903+00:00","error":null,"lastVerifiedAt":"2026-11-09T10:02:25.7473895+00:00","snapshotPublishedAt":"2026-11-06T18:17:57+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-747b24005f13ffe3f133ae77dfb12ae3145f2c7aed5cfebb91eb943ceb4daeb6","complete":true,"records":3060,"lastAttemptAt":"2026-11-09T10:04:34.0336984+00:00","lastSuccessAt":"2026-11-09T10:04:33.8957851+00:00","error":null,"lastVerifiedAt":"2026-11-09T10:04:34.0336984+00:00","snapshotPublishedAt":"2026-11-09T10:03:05+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-e6e6ac3eaece246ff08884368fe1dc99d4d393571e77c126c8f4d38d66697688","complete":true,"records":231297,"lastAttemptAt":"2026-11-09T10:04:28.3938244+00:00","lastSuccessAt":"2026-11-09T10:04:27.0059369+00:00","error":null,"lastVerifiedAt":"2026-11-09T10:04:28.3938244+00:00","snapshotPublishedAt":"2026-11-09T09:33:10+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}