diff --git a/README.md b/README.md index 547dd59..9daf481 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,27 @@ If you are interested in the source code, or want to contribute, please check [t For any further questions, don't hesitate to contact me under bfstop@bfroehler.info +## Security changes in this release + +- The link in the "you were blocked" email now only asks for confirmation when + opened; the unblock itself is a POST request, and only works from the IP + address which was blocked (so mail scanners and link previews can't use it). +- The log view and the IP information view now escape everything they show. +- The unblock page answers with an error status if the link can't be used (400, + 403, 404 or 500; a GET request just asks for confirmation and stays a 200), + unless the plugin's "Use HTTP Error" setting is off. Because the link contains + a secret, the page is not cached, sends no Referer and asks search engines + not to index it. +- New setting "Usernames Not Matching an Account" (default: hash), see the + plugin's CHANGELOG. +- New setting "IPv6 Tracking Granularity" (default: /64). +- The "User Block Message" setting has a new value: the email with the unblock + link is by default only sent if the user has logged in from the blocked IP + address before, so it can't be used to flood somebody's inbox. +- Sending the test email needs the permission to change the settings, and the + .htaccess and GeoIP database path settings are validated. +- Subnets with a prefix length like `1e1` or `0x8` are no longer accepted. + ## 2.0.0: Joomla 5/6 migration Version 2.0.0 migrates the component to PSR-4 namespaced classes diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..6350ec2 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,37 @@ +# Security Policy + +## Supported versions + +Security fixes are made for the latest release of the BFStop plugin +(`plg_system_bfstop`) and the BFStop component (`com_bfstop`). The two are +released together and need to be on the same major and minor version, so +please update both. + +## Reporting a vulnerability + +Please report suspected vulnerabilities by email to **security@bfstop.de** +rather than in a public issue or pull request, so that a fix can be +available before details are public. + +It helps to include: + +- the affected version(s) of plugin and component, and the Joomla! and PHP + versions, +- the relevant settings (blocking mode, proxy settings, ...), +- steps to reproduce, or a proof of concept, and what an attacker gains. + +## What is and isn't in scope + +BFStop sits in front of the login of a Joomla! site and decides which +requests to reject, so these are the kind of reports which are most useful: + +- ways around a block or the failed-login counting (for example by faking + the client address, or by reusing an unblock link), +- ways to get someone else blocked, or to make the plugin tie up the server, +- ways to read or change data (settings, blocks, logged usernames) without + the necessary permissions, and cross-site scripting in the backend views. + +Settings are changed by users with the `core.admin` permission for +`com_bfstop`. They can, among other things, choose the directory in which the +plugin writes its `.htaccess` file, so grant that permission only to people +you trust with the web server's configuration for your site. diff --git a/admin/forms/settings.xml b/admin/forms/settings.xml index 6cd6627..6d9cfea 100644 --- a/admin/forms/settings.xml +++ b/admin/forms/settings.xml @@ -1,5 +1,5 @@ -