Gridbox 2.20.4.0 Fixes a Language Install CSRF and an Image Path Check

Update, 27 October 2026: Gridbox 2.20.4.2 fixes two SQL injection flaws
Balbooa released Gridbox 2.20.4.2 on 27 October to fix two SQL injection flaws that need no login, CVE-2026-102788 and CVE-2026-102789, in every version up to 2.20.4.1. The 2.20.4.0 release this post recommends is now affected too, so update straight to 2.20.4.2. What changed is in our Gridbox 2.20.4.2 write-up.
TL;DR
Balbooa released Gridbox 2.20.4.0 on 8 October 2026 with two security fixes for the Joomla page builder. The bigger one is a Cross-Site Request Forgery (CSRF) flaw in the language installation process. The smaller one tightens the path check in the image preview so it only serves images from the configured media folder.
The version most Gridbox sites run today, 2.20.3.1, is affected, and so is every build before it. Update to 2.20.4.0. The Joomla CNA published a CVE for each flaw later the same day: CVE-2026-102784 for the CSRF, scored 8.7 High, and CVE-2026-102783 for the path check, scored 6.3 Medium. High matches our own call, because the CSRF flaw ends with software installed on the site, even though it needs a Super User to be tricked into it.
CVE-2026-102784Cross-Site Request Forgery in language installation
HighJoomla CNA
A Super User who opens a crafted link while signed in installs a package the attacker chose, which puts the attacker's code on the site.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:NWhat does this mean?
CVSS 4.0 scores how severe a flaw is, from 0 (no impact) to 10 (critical). Each pair of letters in the string above is one metric; here is what this one's says.
How it is reached
- AV:N
- Network: Reachable across the internet
- AC:L
- Low: Nothing to work around, it just works
- AT:N
- None: Works against any affected install
- PR:N
- None: No account needed
- UI:P
- Passive: Someone has to visit a page
What it does to the site
- VC:H
- High: Everything the site holds can be read
- VI:H
- High: Data and files can be altered at will
- VA:H
- High: The site can be taken down
What it does beyond the site
- SC:N
- None: Other systems keep their data
- SI:N
- None: Other systems keep their integrity
- SA:N
- None: Other systems stay up
CVE-2026-102783Path traversal in the image preview
MediumJoomla CNA
An anonymous visitor can fetch an image from a folder next to the media folder whose name starts the same way, such as images-backup. Only Gridbox image file types are served.
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:NWhat does this mean?
CVSS 4.0 scores how severe a flaw is, from 0 (no impact) to 10 (critical). Each pair of letters in the string above is one metric; here is what this one's says.
How it is reached
- AV:N
- Network: Reachable across the internet
- AC:L
- Low: Nothing to work around, it just works
- AT:P
- Present: Needs a particular deployment or race to line up
- PR:N
- None: No account needed
- UI:N
- None: Nobody has to be tricked into anything
What it does to the site
- VC:L
- Low: Some data can be read
- VI:N
- None: Nothing can be altered
- VA:N
- None: The site stays up
What it does beyond the site
- SC:N
- None: Other systems keep their data
- SI:N
- None: Other systems keep their integrity
- SA:N
- None: Other systems stay up
The language installation CSRF
Gridbox lets an administrator install extra interface languages from inside the component. Installing a language means installing a Joomla package, which is the same machinery that installs any extension, so the action is limited to Super Users.
Cross-Site Request Forgery is an attack on the person rather than the server. The attacker cannot log in, so instead they get someone who already is to send a request on their behalf, usually by getting them to open a link or visit a page while their admin session is live. Joomla’s defence is a per-session token that every state-changing request must include. A request forged from another site does not have the token, so Joomla rejects it.
Gridbox 2.20.2 added that token check across its admin controllers as part of fixing the 23 vulnerabilities from our July audit. The language installation action had a route around that check. According to the CVE record, the shared token check only ran when the request was a POST, and the language install action accepted a GET, so a plain link reached it with no token at all. 2.20.4.0 closes that path, so the token check now covers the language install as well.
Why an admin-only flaw still rates High
A Super User has to be signed in and has to open the attacker’s link, so this cannot be sprayed at a site the way an unauthenticated flaw can. But the action installs software. If it works, the attacker’s code runs on the site with the same access as any extension you installed yourself. Admins open links all day, in support tickets, contact form messages and emails, and one of them is all it takes.
The image preview path check
The second fix is narrower. Gridbox’s image preview serves an image from the site so the editor can show it, and it is meant to stay inside the media folder configured in Gridbox. The containment check in 2.20.2 to 2.20.3.1 was looser than intended, and in some folder layouts it accepted image paths outside that folder. 2.20.4.0 makes the comparison exact.
The preview only serves Gridbox image file types, so configuration.php and other PHP files were not reachable through it. The CVE record adds one detail: if the server cannot decode the image, the preview streams the file as it is, which is why the record treats it as a file read at all. In practice it needs a folder beside the media folder whose name starts the same way, such as images-backup, with images in it you did not mean to publish. It tightens the containment added in July.
Which Gridbox versions are affected?
Both CVE records list every release from 1.0.0 to 2.20.3.1 as affected. We also compared the public 2.20.4.0 package with 2.20.3 and 2.20.2.2, and both of the changed areas are present from 2.20.2 onwards. Our newest rule flags 2.20.3.1 with both CVE numbers, and the existing rules for earlier ranges already flag every older build and point to 2.20.4.0 as the version to install.
| Gridbox version | Status | What to do |
|---|---|---|
| 2.20.4.0 | Fixed | Nothing |
| 2.20.3.1 | Affected by this release’s two fixes | Update to 2.20.4.0 |
| 2.20.2.3 to 2.20.3 | Also exposed to the blog author SQL injection | Update to 2.20.4.0 |
| Below 2.20.2 | Exposed to the actively exploited July flaws | Update to 2.20.4.0 urgently and check for compromise |
Sites on the Joomla 3 line top out at Gridbox 2.17.0.2, which has no fix for any of this year’s flaws. For those sites the fix is moving to a supported Joomla.
What you should do right now
- Update Gridbox to 2.20.4.0 on every Joomla site that runs it, through Joomla’s Update tab or the mySites.guru mass updater.
- Confirm the version afterwards. Open System, Manage, Extensions and check Gridbox reads 2.20.4.0.
- Check for extensions you did not install. If you are worried a Super User on one of your sites opened something they should not have, look at the extensions list for anything unexpected, and at administrator accounts you did not create.
- If you use Facebook login, generate a new App ID and App Secret. Balbooa reworked the integration for Facebook’s API changes, so the old ones will not work.
- Check your image compression settings. They have moved from Media Manager settings to Performance Tools, Images, and now apply to image uploads anywhere in Gridbox.
Find administrator accounts you never created
mySites.guru checks every connected site for this automatically and flags it the moment it appears. It runs as part of the full audit on every connected site.
How do I find every Gridbox site I manage?
mySites.guru keeps a live inventory of the extensions on each connected Joomla and WordPress site. Search for Gridbox once and you get the sites running it, the version each is on and whether an update is waiting. Across the Joomla sites we monitor, several hundred run Gridbox, and the large majority were on 2.20.3.1 on the morning of the release.
We have added 2.20.3.1 to our vulnerability database, so connected sites still on it are flagged automatically, and the mass updater pushes 2.20.4.0 to all of them from one screen. That is part of the subscription, not a separate purchase.
Four Gridbox security releases since July
2.20.1 fixed the cookie authentication bypass in July. 2.20.2 fixed the 23 flaws from our audit at the end of that month. 2.20.3.1 fixed the blog author SQL injection three weeks ago. 2.20.4.0 is the fourth, and both of its fixes are follow-ups to protections that 2.20.2 introduced: the CSRF token check and the image path containment.
That pattern is normal once a large codebase gets serious attention. The first round of fixes adds the right protections, and outside researchers then find the corners those protections missed. The sites that get hurt are the ones that stopped updating after the first round. If your Gridbox sites went to 2.20.3.1 three weeks ago, they need updating again today.
Disclosure and severity
This is not a mySites.guru finding. Balbooa credits Sergiy Tryzhychynskyi for reporting both issues, and David Jardin of the Joomla Security Strike Team for coordinating the disclosure. Sergiy also reported part of the Balbooa Forms 2.4.3.4 fixes last month.
Balbooa’s note gave no CVE, no score and no affected range. The Joomla CNA filled that in a few hours later with CVE-2026-102784 (CSRF, CVSS 4.0 8.7 High) and CVE-2026-102783 (path traversal, CVSS 4.0 6.3 Medium), both listing every release up to 2.20.3.1. We had set our rule from the code before the records existed, so connected sites were flagged that morning, and the CVE numbers were added to the rule once they were published.
The CNA’s 8.7 matches our own call on the CSRF flaw: it needs a signed-in Super User to cooperate unknowingly, which keeps it below Critical, but success means attacker-chosen software installed on the site. The path traversal record is less consistent. Its score is 6.3 Medium, but its own description says the finding “is rated Low rather than presented as arbitrary file disclosure”. We think Low is closer to the real risk, because it needs an oddly named sibling folder of images to exist before there is anything to read. We quote the record’s score, because that is what scanners and other advisories will show you.
If a site has already been hit, or you would rather someone else made sure, fix.mySites.guru patches the site, audits it for backdoors and hands it back secure for a single fixed fee, usually the same day.
Timeline
Gridbox 2.20.2 fixes 23 vulnerabilities from a mySites.guru audit
Eleven CVEs, several already being exploited. 2.20.2 also added CSRF token checks across the admin controllers.
Gridbox 2.20.3.1 fixes an unauthenticated blog author SQL injection
Reported by Studio Przy Lesie, identified by Cert.pl.
Gridbox 2.20.4.0 fixes the language install CSRF and the image preview path check
Reported by Sergiy Tryzhychynskyi, coordinated by the Joomla Security Strike Team.
Joomla CNA publishes CVE-2026-102784 and CVE-2026-102783
8.7 High for the language install CSRF, 6.3 Medium for the image preview path traversal. Both records cover every release up to 2.20.3.1.
mySites.guru flags every affected site and alerts customers
Connected sites on 2.20.3.1 are flagged automatically, alongside the earlier Gridbox rules.
Further Reading
- Balbooa: Gridbox 2.20.4.0 New Features and Security Hardening - the vendor's own release note.
- Blind SQL Injection in Gridbox's Blog Author - the 2.20.3.1 fix three weeks earlier.
- Another 23 Critical Security Vulnerabilities in Gridbox for Joomla - the July audit and its eleven CVEs.
- Gridbox for Joomla: One Cookie and You Are a Super User - the July authentication bypass, CVE-2026-61425.
- OWASP: Cross Site Request Forgery - how CSRF works and why token checks stop it.
- CWE-352: Cross-Site Request Forgery - the underlying weakness class.


