Where
-Infinity
0

Vendor Risk Score

See how writefreely compares to other vendors in security performance

View Risk Score →

Software

Severity
8.4
EPSS
0.04%
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

WriteFreely through 0.15.1, when MySQL is used, allows local users to discover credentials by reading config.ini.

First published (updated )

Hi!

Reposting this [1] here with permission: Public disclosure of security vulnerability in @writefreely [2]:

I reported this privately to the project maintainers back in October. There has been no further movement from them since I made my initial report, so I have decided to make this public so that #writefreely admins can properly secure their instances.

Affects: Any Writefreely instance backed by a #mysql database running on any #linux-based platform (other platforms may be affected as well, I have not tested).

Severity as assessed by CVSS v3: Critical (9.3)

Summary: If you use the standard getting started instructions(https://writefreely.org/start) and set up to connect to a MySQL database with writefreely config start, the created config.ini file stores the complete database connection configuration, including host, username, and password in plain-text in a world-readable file.

If Writefreely is being run on a shared machine, an attacker with access to that machine could use this to gain complete access to the underlying database, including user account passwords, private posts, and anything else stored by Writefreely, as well as potentially altering or deleting anything there.

PoC: 1. Download Writefreely 2. Run setup with writefreely config start 3. Select a MySQL backend and provide a username and password 4. Finish setup 5. A publicly readable config.ini file is immediately created with all of the database credentials in it.

Impact: Tested on Ubuntu 22.04. Probably true at least for all Linux builds. Any Writefreely instance running on a shared machine is potentially vulnerable to total database compromise.

Attack vector: Local, an attacker would need console access to the machine running the Writefreely instance to gain access to it. Attack complexity: Low, they need only check for a readable config.ini file. Privileges required: None, the file is world-readable. User interaction: None Confidentiality: High, an attacker could gain complete access to the MySQL database, including contents of any private or unpublished posts. Integrity: High, an attacker could gain complete write access to he MySQL database and overwrite it with any information they'd like. Additionally, an administrator could be totally unaware of any compromise, as this access may not leave any traces of its presence. Availability: High, an attacker could completely erase or corrupt the backing database, bringing the server down, and completely destroying all contents that have not been backed up.

Fix: Administrators of Writefreely instances backed by MySQL databases, particularly those on shared machines, should immediately check the permissions of their config.ini file and make it readable to the file owner only. This file contains sensitive information and should not be public. Additionally, any time they use Writefreely's console tools to change their server settings, they should recheck their config.ini's permissions, as Writefreely's automated tools can reset the file permissions. - Fay

[1] https://raphus.social/@TV4Fun/113846757112643161 [2] https://github.com/writefreely/writefreely

First published (updated )

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203