After upgrading KeePass from version 2.61.1 to 2.62, the KeeAnywhere 2.1.0 plugin no longer loads.
KeePass reports an error during PLGX extraction:
"Attempted to perform an unauthorized operation."
The error occurs while extracting AWSSDK.S3.CodeAnalysis.dll into the temporary directory.
Tests performed:
• KeePass 2.61.1 + KeeAnywhere 2.1.0: works correctly.
• KeePass 2.62 + KeeAnywhere 2.1.0: fails to load.
• The problem persists after rebooting Windows.
• Running KeePass as administrator does not solve the problem.
• The Windows TEMP directory is writable.
• The KeePass PluginCache directory is writable.
This strongly suggests a regression or compatibility issue related to the new PLGX extraction path validation introduced in KeePass 2.62.
Could you please investigate?
The temporary directory will not be Windows temp. Most likely it's in the .NET cache directory (%windir%\Microsoft.NET\assembly).
As a test, remove the PLGX and copy the DLL into the plugins folder of KeePass.
https://sourceforge.net/p/keepass/discussion/329221/thread/9e6ec4ea/#3201
cheers, Paul
In KeePass 2.62, a path validation for files extracted from a PLGX file has been added. This prevents that files are extracted outside of the temporary directory that is used while compiling a PLGX plugin.
The PLGX file of KeeAnywhere 2.1.0 attempts to extract such a file (
..\packages\AWSSDK.S3.3.5.8\analyzers\dotnet\cs\AWSSDK.S3.CodeAnalysis.dll), which KeePass now refuses to do. So, the path validation is working correctly; the KeeAnywhere plugin must be updated.Directly after implementing the path validation (on 2026-05-06), I've sent the KeeAnywhere author an e-mail about this. I assume that he wanted to wait for the release of KeePass 2.62 and am optimistic that we'll see a new KeeAnywhere version soon.
Until then, my suggestion would be to use the DLL files (from the ZIP package) of KeeAnywhere instead of the PLGX file. Available here:
https://github.com/Kyrodan/KeeAnywhere/releases
Best regards,
Dominik
Just wanted to confirm that the workaround proposed by Dominik works. To schematize it:
This should work until a new version of KeeAnywhere is released
I can also confirm that the workaround does work. Thank you Dominik!