Protection against compromised accounts #11084
Replies: 8 comments 8 replies
-
More ideas:
I think we don't need to implement 2FA inside OxS tools, as far there are nice third party projects just focused on this like: But maybe ensure OxS could work nicely with them and write documentation? |
Beta Was this translation helpful? Give feedback.
-
I'm interested in many of these approaches, but IMO the pathway to supporting them is via better adoption of Laravel as a prerequisite. Starting with 3.5.0, we use Laravel for session and cookie management; @Vitaliy-1 has some work in progress to convert user management to Eloquent; and at some point we'll reach a level of adoption where we have to tackle/adopt bootstrapping and configuration. Somewhere along the line we'll be able to delegate login/logout/password change/2fa/OpenID/etc. to the Laravel ecosystem, which will considerably reduce our technical debt while opening a lot of possibilities. Building out our toolset in advance of that change will increase technical debt. |
Beta Was this translation helpful? Give feedback.
-
Hello @asmecher, to confirm that I'm following: is the plan atm to not add any new features to improve account security until we have Eloquent in place? Assuming that this is the case, what sort of timeline would we be looking at before some of the improvements identified here would be considered for inclusion? Are we looking at a 3.6 or 3.7 roadmap at this point? |
Beta Was this translation helpful? Give feedback.
-
In addition to the improvements identified above, I think we'd be well served to include the latest round of NIST recommendations, see e.g. a recent summary. As a minimum, we should increase the minimum password length to 15 characters. We could also consider porting some of the features provided by the betterPassword plugin into core, specifically blocking weak passwords, temporarily locking-out accounts after N failed login attempts, and disallowing password re-use. Some of the other plugin features are no longer recommended as best practices, e.g. requiring special characters in passwords. |
Beta Was this translation helpful? Give feedback.
-
With respect to MFA, there are probably at least two types that we need to consider. The first type would be built-in with our applications and would not require any 3rd-party integration, e.g. with Keycloak, OpenID. As I understand it, the large majority of OJS deployments will not have the capacity or resources to host a dedicated SSO solution. Built-in support could include any/all of the following:
MFA authentication via mobile authenticator apps can also be supported directly within our applications without requiring deployment of a 3rd-party service, similar to the default feature set provided by other open source platforms, e.g. Mattermost, Nextcloud. The second type of MFA would be provided by 3rd-party services that integrate with OJS, e.g. Keycloak, OpenID. To my mind, these are edge-case deployments rather than typical for our community and user base. In a nutshell, OJS should support best practice features out-of-the-box, including strong account protection, regardless of whether users have installed additional plugins or are able to integrate OJS with 3rd-party services. |
Beta Was this translation helpful? Give feedback.
-
CC'ing @ctgraham as well for his input given his experience in this area. |
Beta Was this translation helpful? Give feedback.
-
In the Indonesia event there were many people asking about how to protect their installations against hacking attacks, they have a lot of problems with cassino ads inserted into their journals, so I think we should provide good defaults out-of-the-box. I'd say that passwords were relegated to cryptographic salts, 2FA is a requirement. But given that many users are not skilled enough to setup some types of 2FA (e.g. OTP), I think the defaults should be nice. The passwordless approach from Notion for example, is the most user friendly in my opinion, and of course, the user should be able to change the authentication method. |
Beta Was this translation helpful? Give feedback.
-
My thumbs-up to the discussion here so far. The only thing I would like to add which I don't see already in the thread is that another goal should be integrating as much as possible with external authentication. Let Shibboleth, ORCID, Google, OpenID, etc. handle responsibility for the 2FA; others already do it and do it well. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Problem
Given that attackers have many ways to attack an account, it makes sense to make the task more difficult.
Status
Currently we have these protections:
Ideas
A very simple, but powerful measure is to send an email notification after logging into the account: "You've just logged in, if it wasn't you, your account might be compromised, change your password"
We can also include two-factor authentication methods:
Together with the captcha, the login can also be rate-limited to protect against brute-force attacks. I think we should include/integrate the https://github.com/ulsdevteam/pkp-betterPassword into the codebase.
If we store recent locations used by the user, it's possible to block (ask for an extra step, such as an email confirmation) attempts from unexpected locations.
Display active sessions (specially when there's more than a single one attributed to the same user!)
Beta Was this translation helpful? Give feedback.
All reactions