Download Our Latest Software

Akeeba Backup for Joomla! 10.3.7 Stable

Released on: 2026-07-30 03:25 CDT

This is a bug fix, security hardening, and maintenance release. Two of the bugs affect the integrity of your backups and your profile settings; please read the first two sections below. The security changes tighten access control and anti-CSRF protection across the backend. The security issues addressed are low severity and we have no indication any of them were exploited; we are releasing those changes as a precaution and as defence-in-depth.

Database dumps lost precision on DOUBLE columns

If your site uses the PDO MySQL or the PostgreSQL database driver, every backup taken with an earlier version silently truncated the values of DOUBLE columns to 14 significant digits instead of the up to 17 digits such a column can hold. For example, 0.12345678901234568 was written to the backup as 0.12345678901235. This is now fixed; dumps render floating point values at full round-trip precision.

Sites using the standard MySQLi driver — the great majority of Joomla! sites — were never affected. If you were affected and you keep backups you may one day need to restore, we recommend taking a fresh backup with this version. Note that the loss of precision only ever affected the backup archive; the data in your live database was never touched.

Cross-profile remote storage settings could be overwritten

When a backup was uploaded to Box, Dropbox, Google Drive, or OneDrive and the access token happened to need refreshing during the upload, the refreshed token was saved into whichever profile was currently selected in the backend interface, rather than the profile the backup actually belonged to. If those two profiles were different, the selected profile's remote storage configuration was overwritten with the uploading profile's settings.

This is now fixed. If you use several backup profiles with cloud storage — particularly if you have noticed a profile mysteriously pointing at the wrong account, folder, or storage provider — please review each profile's Configuration page and correct anything that looks wrong.

A profile with a missing access token now recovers by itself

Box, Dropbox, Google Drive, and OneDrive keep two credentials per profile: a short-lived access token, and a refresh token used to mint a new one. Since version 10.3.6 these engines refreshed the access token ahead of its recorded expiry, which fixed uploads failing when a token lapsed mid-backup. However, a profile which had somehow lost its access token but kept a future expiry date would never refresh: the engine believed the token it no longer had was still good, sent an empty credential, and the provider rejected it with an error which said nothing about the real cause. On Google Drive this showed up as “Method doesn't allow unregistered callers” when fetching an archive back to your server.

A missing access token now always triggers a refresh, so such a profile heals itself on the next attempt without you having to reconnect your account. Two ways a profile could reach that state are also fixed: Google Drive and OneDrive used to record a rejected token refresh as if it had succeeded, storing a blank token (see below), and the cross-profile problem described above could overwrite a profile's credentials with another's.

Access control fixes

A few backend pages did not consistently enforce the Akeeba Backup privilege they were meant to require. Most notably, the Schedule page — which displays the front-end and JSON API secrets — is now restricted to users who are allowed to edit the component's Options. These checks only ever applied to users who already had backend access to Akeeba Backup, but they were stricter in intent than in practice, so we have brought the enforcement in line with the design.

Anti-CSRF hardening

A number of backend actions now require an anti-CSRF token before they will run: the backup filter, exclusion and inclusion editors; remote archive delete and download; the Transfer Wizard, Upload and S3 import flows; the FTP/SFTP connection tests; the Configuration Wizard; and a handful of minor control panel actions.

To put the risk in perspective: every one of these actions was already restricted to a logged-in Akeeba Backup administrator, and triggering one would have required tricking that administrator into visiting a malicious web page while logged in. Most of the actions are submitted in a way that current web browsers' default cookie policy already blocked from cross-site abuse. Even in the worst case the impact was limited to tampering with or deleting backups — there was no path to running code, reading your data, or taking over an account. We have added the tokens because requiring them is simply the correct behaviour, regardless of the browser-side protections.

The backup page deserves a special mention: long-running backups now carry a dedicated per-backup token, so a backup can no longer be interrupted by the global session token changing midway through.

Clearer error messages

Several remote storage engines used to fail in ways that told you nothing useful. Box now tells you that your authorisation has lapsed and needs renewing, instead of reporting a bare HTTP 401. Dropbox now explains that your Download ID is missing or no longer valid, rather than failing obscurely. Google Drive and OneDrive now report a rejected token refresh — and, importantly, no longer treat it as a success and store the resulting blank credential. WebDAV now reports the actual reason an upload failed, both on screen and in the backup log.

Other changes

  • The Test FTP Connection button ignored the “Use FTP over SSL (FTPS)” setting. It reported an authentication failure against servers which only accept FTPS, even though backups to those servers worked correctly.
  • All database queries built from filter, user state, and request values now use bound, typed query parameters, throughout the backend, the front-end JSON API, and the Akeeba Engine.
  • The front-end and JSON API Secret Word is now compared in constant time.
  • The backend backup AJAX endpoint now sends no-cache headers.
  • Importing a profile without selecting a file now redirects gracefully instead of showing an error page.

Changelog

Bug fixes

  • [HIGH] Box, Dropbox, Google Drive, OneDrive token refresh during upload could overwrite another profile's remote storage configuration
  • [HIGH] Database dumps silently lost precision on DOUBLE columns (PDO MySQL and PostgreSQL)
  • [LOW] Hardening: all database queries built from filter, user-state, and request values now use bound, typed query parameters across the backend, front-end JSON API, and the Akeeba Engine
  • [LOW] Hardening: assorted backend control panel actions now require an anti-CSRF token (backup filter/exclusion/inclusion editors, remote archive delete/download, Transfer Wizard, Upload, S3 import, FTP/SFTP connection tests, custom data processing API, Configuration Wizard, output directory check, hide restoration modal, dismiss upsell)
  • [LOW] Hardening: the backend backup AJAX flow now uses a per-backup anti-CSRF token, immune to session token rotation during long backups
  • [LOW] Hardening: the front-end and JSON API Secret Word is now compared in constant time
  • [LOW] Importing a profile without selecting a file caused an error page instead of a graceful redirect
  • [LOW] The backend backup AJAX endpoint did not send no-cache headers
  • [MEDIUM] Backend views did not all enforce their intended ACL privilege (Schedule, Push, Statistic, Profile, and deleting backup records)
  • [MEDIUM] Box reported a lapsed authorisation as an opaque HTTP 401 error
  • [MEDIUM] Box, Dropbox, Google Drive, and OneDrive did not refresh an access token missing from the backup profile, failing with an opaque authorisation error
  • [MEDIUM] Dropbox did not explain a missing or lapsed Download ID
  • [MEDIUM] Google Drive and OneDrive did not report a rejected token refresh
  • [MEDIUM] Test FTP Connection button ignored the "Use FTP over SSL (FTPS)" setting, causing spurious authentication errors against FTPS-only servers
  • [MEDIUM] The Schedule page is now restricted to users allowed to edit the component's Options (it displays the front-end/JSON API secrets)
  • [MEDIUM] WebDAV did not surface failed upload reason to the UI or the log file

Release files

Akeeba Backup Core

pkg_akeebabackup-10.3.7-core.zip

3.40 Mb

PHP 7.4 PHP 8.0 PHP 8.1 PHP 8.2 Joomla! 4.4 Joomla! 5.0 PHP 8.3 Joomla! 5.1 Joomla! 5.2 Joomla! 5.3 Joomla! 5.4 PHP 8.4 Joomla! 6.0 PHP 8.5 Joomla! 6.1

Download now