Skip to content

feat(security): add local pwned-password list - #10197

Open
BacLuc wants to merge 1 commit into
ecamp:develfrom
BacLuc:check-password-against-breached-passwords
Open

feat(security): add local pwned-password list#10197
BacLuc wants to merge 1 commit into
ecamp:develfrom
BacLuc:check-password-against-breached-passwords

Conversation

@BacLuc

@BacLuc BacLuc commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Add NotPwnedPasswordValidator, which checks a local plaintext list generated from a pinned SecLists Xato password source. The Symfony generator keeps the first 3000 unique passwords with at least 12 UTF-8 characters and performs case-insensitive deduplication.

Runtime validation performs no external HTTP calls or prehashing, and rejects case variants of listed passwords. Keeping the generated list local avoids production and test dependencies on remote availability.

This supports OWASP ASVS 6.2.4: https://github.com/OWASP/ASVS/blob/master/4.0/en/0x11-V2-Authentication.md#v21-password-security

@BacLuc BacLuc added the Meeting Discuss Am nächsten Core-Meeting besprechen label Jun 30, 2026
@BacLuc

BacLuc commented Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

The password list is not good yet. (contains passwords with less than 12 characters).

We need to decide: do we want to do this and make our users angry for the not so critical ecamp?

(Maybe we should disclose that we do not treat ecamp3 as critical an no one should store medical data or other critical things in ecamp?).

@manuelmeister

Copy link
Copy Markdown
Member

Core Meeting Decision

We do this and don't do #10198
This is a higher level requirement.

@manuelmeister manuelmeister removed the Meeting Discuss Am nächsten Core-Meeting besprechen label Jul 2, 2026
@BacLuc
BacLuc force-pushed the check-password-against-breached-passwords branch from 31b791c to ffd421d Compare August 9, 2026 08:26
@BacLuc
BacLuc force-pushed the check-password-against-breached-passwords branch 2 times, most recently from fd9f7ec to aecff60 Compare August 16, 2026 12:20
@BacLuc BacLuc added the deploy! Creates a feature branch deployment for this PR label Aug 16, 2026
@BacLuc
BacLuc temporarily deployed to feature-branch August 16, 2026 12:23 — with GitHub Actions Inactive
@github-actions

github-actions Bot commented Aug 16, 2026

Copy link
Copy Markdown

Feature branch deployment ready!

Name Link
😎 Deployment https://pr10197.ecamp3.ch/
🔑 Login test@example.com / test
🕒 Last deployed at Sun Aug 16 2026 18:03:20 GMT+0200
🔨 Latest commit aa9c8adade1451f51209cc346609d9347bd4c445
🔍 Latest deploy log https://github.com/ecamp/ecamp3/actions/runs/31957266839/job/95190050812
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

@BacLuc
BacLuc marked this pull request as ready for review August 16, 2026 12:31
@BacLuc
BacLuc requested a review from a team August 16, 2026 12:31
Add NotPwnedPasswordValidator, which checks a local plaintext list generated from a pinned SecLists Xato password source. The Symfony generator keeps the first 3000 unique passwords with at least 12 UTF-8 characters and performs case-insensitive deduplication.

Runtime validation performs no external HTTP calls or prehashing, and rejects case variants of listed passwords. Keeping the generated list local avoids production and test dependencies on remote availability.

This supports OWASP ASVS 6.2.4: https://github.com/OWASP/ASVS/blob/master/4.0/en/0x11-V2-Authentication.md#v21-password-security
@BacLuc
BacLuc force-pushed the check-password-against-breached-passwords branch from aecff60 to aa9c8ad Compare August 16, 2026 15:57
@BacLuc
BacLuc temporarily deployed to feature-branch August 16, 2026 16:02 — with GitHub Actions Inactive
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

deploy! Creates a feature branch deployment for this PR run-all-e2e-tests!

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants