Skip to content

3.9.6

Compare
Choose a tag to compare
@lukasbestle lukasbestle released this 27 Jul 09:55
000131a

🚨 Security release

This release fixes several vulnerabilities that were all responsibly reported to us in June 2023:

Thanks to Shankar Acharya (@5hank4r), Alexandre Zanni (@noraj) at ACCEIS and Patrick Falb (@dapatrese) at FORMER 03 for responsibly reporting the identified issues.

Updated default .htaccess

We have updated the .htaccess that ships with our kits to the new version 2023-07-22, which adds protection against browser MIME type detection from malicious file uploads for files that have already been copied to the media folder. We recommend to update your sites’ .htaccess or server configuration with the new changes if you might have potential attackers in your group of authenticated Panel users or if your sites allow file uploads by visitors and the file extensions of uploaded files are not limited to a fixed safe list.

You can find the changes to the .htaccess in this commit and read more about the added rules in the security guide.

Thanks to Shankar Acharya (@5hank4r) for making us aware of this potential attack vector.

Frame-blocking in the Panel

The Panel now sends the Content-Security-Policy: frame-ancestors 'none' header to increase the protection against clickjacking attacks. The session cookie was already set to SameSite before, so this is an additional layer of protection.

Thanks to Shankar Acharya (@5hank4r) for suggesting this security enhancement.

Security-related breaking changes

  • All users are logged out from their sessions after updating to this patch release.
  • The Xml data handler (e.g. Data::decode($string, 'xml')) and the Xml::parse() method no longer process XML external entities.
  • The Panel can no longer be embedded in HTML frames.

🎉 Features

  • Added Rumanian translation (thanks to @danburzo) 🎉

✨ Enhancements

  • Updated translations (is, ko, pl, sv)
  • Stats section: linklabelinfo and value now all support translations and Kirby queries #5256
  • Support for variadic controller arguments (thanks to @lukaskleinschmidt) #5222
  • collection() helper (and corresponding methods) allow passing an $options array which will be provided as additional arguments to the collection closure (thanks to @ceesvanegmond)
    <?php
    
    // site/controller/news.php
    $articles = collection('news', ['order' => 'asc']);
    
    // site/collection/news.php
    use Kirby\Cms\Site;
    
    return function (Site $site, string $order) {
        return $site->find('news')->children()->template('article')->orderBy($order);
    };

🐛 Bug fixes

  • Fixed lock API routes for files that are ancestors of a page called files #5273
  • Kirby queries can handle integers and floats as arguments correctly now
  • Fixed using Query helpers, such as page() alongside provided objects with the same name #5276
  • Structure form options button doesn't disappear anymore when form is open but disabled #5302
  • Fixed Panel URL redirect issue when running on subfolder #5266
  • Fixed number field blur issue #5170
  • Fixed language detection with custom locale #5320
  • Fixed user blueprint home option #5359 (regression)
  • Fixed full preview slug in change URL dialog when in multi-language mode #5371
  • Fixed correct slug rules usage for Romanian (thanks to @danburzo) #5376

♻️ Refactored

  • Clean up search component #5297