Commit Graph
100 Commits
Author SHA1 Message Date
Mounir IDRASSI cca323964e Linux: Add missing header in ARM64 build. Add .oarmv8crypto to .gitignore 2025-01-18 16:37:26 +01:00
Mounir IDRASSI ff63e5aad0 Update Release Notes. Set version to 1.26.18. Update signed Windows drivers. 2025-01-17 07:44:09 +01:00
Mounir IDRASSI 54bd819990 Windows/Linux/macOS: implement AES hardware support on ARM64 (ARMv8) 2025-01-17 00:58:54 +01:00
Mounir IDRASSI c79f8102e0 Update Release Notes about fixed CVEs 2025-01-14 15:52:03 +01:00
Mounir IDRASSI 1c38446d78 Translations: Update translations of newly added fields 2025-01-14 14:59:45 +01:00
Mounir IDRASSI 078d1410dd Linux/FreeBSD: Prevent mounting volumes on system directories and PATH (CVE-2025-23021, reported by SivertPL @__tfr)
Added security checks to prevent mounting VeraCrypt volumes on system directories (like /usr/bin) or directories in the user's PATH, which could theoretically allow execution of malicious binaries instead of legitimate system binaries.

Key changes:
- Block mounting on protected system directories (/usr, /bin, /lib, etc.)
  This restriction cannot be overridden
- Block mounting on directories present in user's PATH environment variable
  This can be overridden with --allow-insecure-mount flag
- Add visual warnings (red border, "[INSECURE MODE]") when mounting on PATH directories is allowed
- Handle symlinks properly when checking paths
- Add new error messages for blocked mount points

To override PATH-based restrictions only (system directories remain protected):
veracrypt --allow-insecure-mount [options] volume mountpoint

Security Impact: Low to Medium
The attack requires either:
- User explicitly choosing a system directory as mount point instead of using VeraCrypt's default mount points
- Or attacker having both filesystem access to modify favorites configuration AND knowledge of the volume password
Default mount points are not affected by this vulnerability.

Security: CVE-2025-23021
2025-01-14 14:59:45 +01:00
Mounir IDRASSI 2cca2e1daf Linux/FreeBSD: Add absolute paths for system binaries to prevent path hijacking (CVE-2024-54187, collaboration with SivertPL @__tfr)
This commit fixes a critical security vulnerability where VeraCrypt could be tricked into executing malicious binaries with elevated privileges. The vulnerability has two severe implications:

1. When sudo's secure_path option is disabled, attackers could execute malicious binaries with root privileges by placing them in user-writable PATH directories (e.g., making "sudo mount" execute a malicious mount binary)

2. By placing a malicious sudo binary in PATH, attackers could intercept and steal the user's password when VeraCrypt prompts for sudo authentication

The vulnerability allowed attackers to place malicious binaries in user-writable directories that appear in PATH before system directories, potentially leading to privilege escalation and credential theft.

Key changes:
- Implement FindSystemBinary() to locate executables in secure system paths
- Replace all relative binary paths with absolute paths for system commands
- Add security checks for executable permissions
- Update process execution to use absolute paths for:
  * sudo
  * mount
  * fsck
  * terminal emulators
  * file managers
  * system utilities (hdiutil, mdconfig, vnconfig, lofiadm)

The fix ensures all system binaries are called using their absolute paths from secure system directories, preventing both privilege escalation through PATH manipulation and password theft through sudo hijacking.

Security: CVE-2024-54187
2025-01-14 14:59:40 +01:00
Mounir IDRASSI 1b35abb191 Increment version to 1.26.18. Update copyright date. Update Release Notes. Update Windows drivers. 2025-01-14 12:26:28 +01:00
Mounir IDRASSI 2aae142a2d Windows: Fix regression in Traveler Disk creation (#886)
Issue was caused by the fact that Microsoft signing certificate for driver file has changed.
We fix it by updating the SHA512 fingerprint of Microsoft code signing certificate.
2025-01-13 01:02:12 +01:00
Mounir IDRASSI cc2f177c5c Linux Debian/Ubuntu: use a distro-specific version string to avoid APT repository conflicts
In a Debian-style APT repository, the pool/ directory groups packages primarily by source package name and binary package name, version, architecture, etc. If two distinct .deb files have identical name and version (as seen in their control file) and same architecture, reprepro will report a conflict when adding one after the other.

So, we need to append distro-specific string to the existing version in order to avoid such conflict when creating VeraCrypt APT repository.
2025-01-11 16:23:11 +01:00
Mounir IDRASSI e8e0be2ad5 Update donation HTML page to use new PayPal donation links
We add javascript code to the page to handle dynamic selection of donation currency
2025-01-06 11:50:20 +01:00
Mounir IDRASSI a8c904813b Windows: Add missing file entry to Zip project after libzip update 2025-01-06 11:46:53 +01:00
Mounir IDRASSI 138e5e7c1d Windows: Update libzip to version 1.11.2 2025-01-01 10:37:56 +01:00
Mounir IDRASSI fcc6302e61 Windows: Update LZMA SDK to version 24.09 2025-01-01 10:37:18 +01:00
Mounir IDRASSI 4e85009f57 Windows: use modern API to gather system entropy for random generation instead of obsolete that were not working
This commit increases randomness quality by using more dynamic/varied sources of entropy.
PDH-based disk and network statistics collection in now added to random pool

- Introduced `GetDiskStatistics` to gather disk read/write performance data using PDH API.
- Introduced `GetNetworkStatistics` to gather network send/receive performance data using PDH API.
- Integrated high-resolution timestamps and random intervals to improve entropy in collected data.
- Updated `SlowPoll` function to utilize PDH-based disk and network statistics.
- Removed obsolete NetAPI32-based network statistics collection.
2024-12-27 00:56:50 +01:00
Mounir IDRASSI f3af65b007 Windows driver: Use IO_DISK_INCREMENT for event signaling in IRP completion routine
This provides a slight priority boost for waiting threads and maintains standard practice for disk device drivers.
2024-12-25 17:58:12 +01:00
Mounir IDRASSI d9e17522ee Windows: Update Windows version check on startup to require Win10 1809 or later
- Add IsWin10BuildAtLeast() helper function to check Windows 10 build numbers
- Replace direct build number comparison with IsWin10BuildAtLeast() for ReflectDrivers check
- Update error message to be more specific about Windows version requirement
2024-12-25 17:00:37 +01:00
Mounir IDRASSI 81f0adcc35 Windows Driver: set Windows 10 version 1809 as minimum.
To support this, we had to replace ExAllocatePool2 by ExAllocatePoolUninitialized.
2024-12-25 16:18:19 +01:00
Mounir IDRASSI 283059523d Windows Driver: make UpdateBuffer function more robust by adding security region size parameter 2024-12-25 16:09:10 +01:00
Mounir IDRASSI 650984c958 Linux: Fix warning during build cause by deprecated 'u' modifier in "ar" command 2024-12-25 11:42:37 +01:00
Mounir IDRASSI 3f8ac7cd51 Add XML validation Github workflow (contributed by Jertzukka github.com/Jertzukka/VeraCrypt/tree/ci) 2024-12-25 11:35:58 +01:00
Mounir IDRASSI ca331b8b34 Linux/macOS: Simplify sudo session detection logic and extend it to macOS
This update simplifies the logic for detecting active sudo sessions by checking the exit code of the sudo -n -l command, which reliably returns 0 if a session is active.

Additionally, this approach is now applicable to recent macOS versions, as they no longer have the sudo bug that previously prevented us from using this method.
2024-12-25 11:29:32 +01:00
Mounir IDRASSI 341411e935 Linux: Fix "Password too long" error message not expanded to include max length (#1456) 2024-12-24 09:24:23 +01:00
Mounir IDRASSI b6e698b376 Linux/macOS: check if volume doesn't exist before starting the mount operation. 2024-12-23 23:10:37 +01:00
Mounir IDRASSI f05ce4eaf3 Updated Russian translation of Release Notes (by Dmitry Yerokhin) 2024-12-22 23:40:34 +01:00
Mounir IDRASSI 57cc2473e7 Translations: Update Slovenian translation (contributed by Prof. Sasa Divjak) 2024-12-22 23:33:48 +01:00
Mounir IDRASSI 3bb5184645 Windows: Increment version to 1.26.17.2. Update signed drivers. 2024-11-27 01:05:55 +01:00
Mounir IDRASSI c98fc900d8 Windows Setup: Fix the implementation of backup/restore of file permission during update 2024-11-27 01:04:55 +01:00
Mounir IDRASSI 968b72947f Update Release Notes. 2024-11-26 23:59:38 +01:00
Mounir IDRASSI 3b4b0f618c Translations: Update Slovenian translation (contributed by Prof. Sasa Divjak) 2024-11-26 23:22:19 +01:00
Mounir IDRASSI 7e398c96d0 Windows: don't test sign driver by default in Release mode. 2024-11-25 00:15:47 +01:00
Mounir IDRASSI 0c5fcf2286 Windows Setup: Fix "Access Denied" issue during VeraCrypt update after a Windows upgrade
During a Windows upgrade, ownership of veracrypt.sys is set to TrustedInstaller, preventing VeraCrypt from accessing the file during an update.

This commit resolves the issue by temporarily taking ownership of the file to rename it, allowing the new file to be copied. The setup process now obtains additional privileges for this operation, which are properly dropped once the file copying is complete.
2024-11-25 00:05:50 +01:00
Mounir IDRASSI 8ad9e7d769 Set 1.26.17 release date to November 24th 2024-11-24 14:04:21 +01:00
Mounir IDRASSI b6f3d8a23a Translations: Fix issues in Slovenian translation. Complete translation of some entries 2024-11-24 13:46:08 +01:00
Mounir IDRASSI e798d88407 Translations: Update Slovenian translation (contributed by Prof. Sasa Divjak) 2024-11-24 13:43:34 +01:00
Mounir IDRASSI 53bbee3a7c Windows Driver: Set version to 1.26.17.1. Update signed drivers. 2024-11-24 11:26:41 +01:00
Mounir IDRASSI 453ff2880e Windows Driver: Make max work items count configurable. Increase default to 1024. Queue write IRPs.
- Made the maximum work items count configurable to allow flexibility based on system needs.
  - Increased the default value of max work items count to 1024 to better handle high-throughput scenarios.
  - Queue write IRPs in system worker thread to avoid potential deadlocks in write scenarios.
2024-11-23 17:44:48 +01:00
Mounir IDRASSI 5a85c54c6e Windows Driver: Optimize spinlock usage in CompleteIrpWorkItemRoutine
Reduce the critical section protected by spinlock to only cover the list manipulation operation. Move the ActiveWorkItems counter decrement outside the spinlock using InterlockedDecrement, and separate event signaling from the locked section.
This change minimizes time spent at raised IRQL (DISPATCH_LEVEL) and reduces potential for lock contention.
2024-11-22 15:19:10 +01:00
Mounir IDRASSI 9490336357 Windows: Update signed Windows drivers. 2024-11-20 01:11:15 +01:00
Mounir IDRASSI b85a2df224 Windows driver: use correct WDM type. Increment version to 1.26.17 2024-11-20 00:21:30 +01:00
Mounir IDRASSI f9b9a9ca9f Increment version to 1.26.16. Update Release Notes. Update signed Windows drivers. 2024-11-18 00:04:26 +01:00
Mounir IDRASSI 93868acfdd Windows Driver: Use system functions directly instead of dynamic loading since we are targeting Windows 10 2024-11-17 21:37:16 +01:00
Mounir IDRASSI 42fdbcf3ce Windows Driver: Fix deadlock in EncryptedIoQueue due to re-entrant IRP completions
There was a deadlock issue in the driver caused by the CompletionThreadProc function in EncryptedIoQueue.c:
https://sourceforge.net/p/veracrypt/discussion/general/thread/f6e7f623d0/?page=20&limit=25#8362

The driver uses a single thread (CompletionThreadProc) to process IRP completions. When IoCompleteRequest is called within this thread, it can result in new IRPs being generated (e.g., for pagefile operations) that are intercepted by the driver and queued back into the CompletionThreadQueue. Since CompletionThreadProc is the only thread processing this queue and is waiting on IoCompleteRequest, these new IRPs are not handled, leading to a system freeze.

To resolve this issue, the following changes have been made:

Deferred IRP Completion Using Pre-allocated Work Items:
  - Introduced a pool of pre-allocated work items (COMPLETE_IRP_WORK_ITEM) to handle IRP completions without causing additional resource allocations that could trigger new IRPs.
  - The CompletionThreadProc now queues IRP completions to these work items, which are processed in a different context using IoQueueWorkItem, preventing re-entrant IRPs from blocking the completion thread.

Thread-Safe Work Item Pool Management:
  - Implemented a thread-safe mechanism using a semaphore (WorkItemSemaphore), spin lock (WorkItemLock), and a free list (FreeWorkItemsList) to manage the pool of work items.
  - Threads acquire and release work items safely, and if all work items are busy, threads wait until one becomes available.

Reference Counting and Improved Stop Handling:
  - Added an ActiveWorkItems counter to track the number of active work items.
  - Modified EncryptedIoQueueStop to wait for all active work items to complete before proceeding with cleanup, ensuring a clean shutdown.

These changes address the deadlock issue by preventing CompletionThreadProc from being blocked by re-entrant IRPs generated during IoCompleteRequest. By deferring IRP completion to a different context using pre-allocated work items and managing resources properly, we avoid the deadlock and ensure that all IRPs are processed correctly.
2024-11-17 19:39:58 +01:00
Mounir IDRASSI 22c93dd64c Linux/macOS: make binary symbols visible in crash report. 2024-11-17 16:32:44 +01:00
Mounir IDRASSI b7f6270c0d Windows Driver: Add Unicode define to build and enhance tracing in debug mode 2024-11-16 18:33:28 +01:00
Mounir IDRASSI a588b20975 Windows: Fix driver crash caused by 32-bit leftover code in derive_key_blake2s function 2024-11-16 17:38:25 +01:00
Mounir IDRASSI 9c9870b103 Windows: Avoid modifying BootArguments structure and use __unaligned keyword to inform compiler that pointer is unaligned.
This avoids issues with existing bootloaders
2024-11-16 01:50:06 +01:00
Mounir IDRASSI c86577fc0e Windows: remove 32-bit logic from the code since we support only 64-bit. remove 32-bit EFI bootloader files.
We also fix intermediary files folder for Portable and Setup projects
2024-11-16 01:05:15 +01:00
Mounir IDRASSI 489d3e3873 Windows: Fix output directory configuration of COMREG project 2024-11-16 00:56:59 +01:00
Mounir IDRASSI a69cba98ec Windows: Fix regression in self-test of hash algorithms that caused them to fail 2024-11-16 00:51:32 +01:00
Mounir IDRASSI 3a5fe63224 Windows: Fix VS 2022 projects references 2024-11-15 21:40:56 +01:00
Mounir IDRASSI 62e956942a Windows: remove VS 2019 solution and project files since we migrated to VS 2022. 2024-11-15 18:36:19 +01:00
Mounir IDRASSI fff9e7275a Windows: Fix delayload link warning about comdlg32.dll not used. Remove unused old project files 2024-11-15 17:51:06 +01:00
Mounir IDRASSI 6d1ad12755 Windows: move main project files and solution from VS 2010 to VS 2022. Delete unused files. 2024-11-15 15:50:32 +01:00
Mounir IDRASSI ad39040fdc Windows: Fix warning when building Setup and Portable. No file elevation is used for them. 2024-11-15 15:47:28 +01:00
Mounir IDRASSI 214fbb5cbd Windows: Upgrade VS 2019 solution/projects to VS 2022. Remove Win32 configuration for driver and binaries.
Only setup remains 32-bit to be compatible with both x64 and arm64 Windows.
2024-11-15 14:22:45 +01:00
Mounir IDRASSI de9e472d10 Windows: Fix build of MBR bootloader 2024-11-15 11:16:19 +01:00
Mounir IDRASSI 21e61c8ded Windows: Fix warning in driver build by make get_pkcs5_iteration_count have a single return statement at the end 2024-11-15 11:15:41 +01:00
Mounir IDRASSI fc4a544180 Windows: Use VS builtin __fastfail intrinsic for fatal exception instead of affecting NULL pointer 2024-11-15 00:42:19 +01:00
Mounir IDRASSI 43ad4f93eb Windows: Fix various compiler warnings 2024-11-15 00:41:07 +01:00
Mounir IDRASSI 117d8dd046 Windows: Fix MBR bootload compilation error following latest changes 2024-11-15 00:38:09 +01:00
Mounir IDRASSI 951c8d210b Use portable alignment macro to be compatible with Linux/macOS 2024-11-13 09:36:06 +01:00
Mounir IDRASSI 75152f7dc0 Use adequate const qualifiers for pbkdf2 functions arguments 2024-11-13 09:28:32 +01:00
Mounir IDRASSI c63b74bbfe Linux: Fix build error following latest code cleanup 2024-11-13 09:16:49 +01:00
Mounir IDRASSI cb97351250 Windows: Remove support for 32-bit driver code. Set build target as Windows 10. Simplify code and fix all warnings in driver. 2024-11-13 02:08:51 +01:00
Mounir IDRASSI ec4b44c238 Windows: Use BCryptGenRandom instead of deprecated CryptGenRandom to generate secure random bytes 2024-11-13 02:04:13 +01:00
Mounir IDRASSI a1ade61c59 Linux: Fix build error caused by changes for dynamic CPU SHA support detection 2024-11-11 00:04:46 +01:00
Mounir IDRASSI 262b745940 Linux: Fix detection of SHA CPU support on virtualized environment by trying SHA instruction 2024-11-10 23:36:57 +01:00
Mounir IDRASSI 73684e56d8 Linux: Fix build error following SHA intrinsic support changes 2024-11-10 21:42:24 +01:00
Mounir IDRASSI 04c747fb2d Add support for SHA-256 x86 instrinsic for enhance performance of PBKDF2-HMAC-SHA256 2024-11-10 21:08:00 +01:00
Mounir IDRASSI fcc0c82836 Translations: Fix missing lang id in Romanian translation 2024-11-09 11:35:16 +01:00
Mounir IDRASSI 92ad97ef33 Linux: Improve directory opening logic by prioritizing xdg-open and adding fallback mechanisms (#1420)
- Use xdg-open as the primary method for opening directories, ensuring compatibility with most Linux environments.
- Implemented fallback logic to try other known file managers (e.g., nautilus, dolphin, caja, thunar) if xdg-open is unavailable or fails.

Based on proposal by @bugtracker2019
2024-09-24 03:55:33 +02:00
Mounir IDRASSI ba8dd5137a Linux: Add Fedora as supported distribution in CMakeLists.txt 2024-09-22 11:46:01 +02:00
Mounir IDRASSI 68e2e01745 Windows: Fix EFI configuration editor various issues
We always using Unicode functions to interact with UI. We convert UTF8 string to UTF16 and vis-versa.
Overwrite input string instead of using resize that caused old test to remain.
Fix case of readOnly by using correct message.
change position of OK/cancel button to match other dialogs.
Activate translation on this dialog.
2024-09-19 00:36:31 +02:00
Mounir IDRASSI aaf42a84a7 Linux: fix assert by wxWidgets library included in Ubuntu. 2024-09-18 15:08:31 +02:00
Mounir IDRASSI 380850787e Windows: Simplify error message related to IsEfiBoot since it always fail with ERROR_INVALID_FUNCTION
Proposed by @kriegste on https://github.com/veracrypt/VeraCrypt/issues/360
2024-09-17 18:25:52 +02:00
Mounir IDRASSI 866fc8f513 macOS: fix regression in build script that caused it to ignore fuset switch
fixed by Mattoje #1417
2024-09-17 17:57:14 +02:00
Mounir IDRASSI 5c485e80b6 macOS: restrict --allow-screencapture switch to macOS only since screen protection doesn't work on Linux
In the code we also enable it for TC_WINDOWS but actually we don't use wxWidgets for Windows build.
2024-09-17 00:12:28 +02:00
Mounir IDRASSI eb0eec7b39 Windows: Fix failed EFI detection on some PCs where BootOrder variable is not defined.
we now report that EFI is not support only when GetFirmwareEnvironmentVariable fails with error ERROR_INVALID_FUNCTION.

Proposed by @kriegste on https://github.com/veracrypt/VeraCrypt/issues/360
2024-09-16 23:11:37 +02:00
Mounir IDRASSI 3a1c8bac59 macOS: enhance macOS build script(allow local build, specify wxWidgets version, control packaging)
Based on proposal by @Mattoje in https://github.com/veracrypt/VeraCrypt/issues/1417
2024-09-16 22:42:43 +02:00
Mounir IDRASSI 01dfd0e72b Linux/macOS: Fix missing define that was causing compilation error 2024-09-10 23:32:42 +02:00
Mounir IDRASSI 40f0174408 Translations: Fix wrong escape sequences in Swedish translation (fixed by @an1 on Sourceforge) 2024-09-10 23:08:52 +02:00
Mounir IDRASSI 4a8f068ba5 Windows: Add support for x86 and x64 build for driver and binaries using Visual Studio 2019
We also enable Control Flow Guard and Spectre Mitigation
2024-09-08 17:14:31 +02:00
Mounir IDRASSI 66ce6998b6 Windows: use wcstok_s instead of wcstok for more secure parsing of directory path 2024-09-08 17:10:56 +02:00
Mounir IDRASSI b2e55df00c Documentation: Update CHM user guide 2024-09-02 21:16:47 +02:00
Mounir IDRASSI 4a4cfcdb84 Update Release Notes to mention the fix of EFI regression 2024-09-02 21:07:39 +02:00
Mounir IDRASSI 0970a98c84 Windows: Fix bug in disabling of Windows privileges, they were completely removed instead
This started to cause issues after latest changes to disable privileges when they are no more needed.
Because of the bug, the privileges could not be enabled again because they were wrongly removed.
2024-09-02 14:08:26 +02:00
Mounir IDRASSI f024653450 Windows: Fix truncated displayed error message 2024-09-02 14:02:46 +02:00
Mounir IDRASSI 68ade5717b Windows: Update Release Notes for 1.26.15 release to mention MSI related changes 2024-09-01 22:46:42 +02:00
Mounir IDRASSI 9ec7c27c59 Translations: update Russian translation file by Dmitry Yerokhin. 2024-09-01 22:25:14 +02:00
Mounir IDRASSI dd33a16bb0 Windows: Ensure that installation folder is removed after MSI uninstall by scheduling removal on reboot if needed 2024-09-01 22:19:07 +02:00
Mounir IDRASSI 279b3455a1 Windows: Fix MSI not overwriting existing data files (chm, html, xml) with new version
We use Checksum attribute so that MSI compares hash of file on disk with expected value and trigger overwrite if they differ
2024-09-01 18:01:26 +02:00
Mounir IDRASSI 71dc18aaa2 Windows: Fix MSI not installing all new documentation file. Remove old files left from old versions. Increment version to 1.26.15. 2024-09-01 17:20:01 +02:00
Mounir IDRASSI 61fe6cc82f Documentation: Fix wrong version in Language Packs.html 2024-08-31 09:39:29 +02:00
Mounir IDRASSI 28b20acab0 Wndows: Fix error 1603 returned by MSI silent install when REBOOT=ReallySuppress specified and a reboot is required
In this case, installation was done by the customer action VC_CustomAction_DoChecks was returning the error ERROR_INSTALL_FAILURE (1603)nevertheless.
Now we return success code correctly.
2024-08-30 15:21:21 +02:00
Mounir IDRASSI b5c7f628d8 Documentation: Update CHM documentation 2024-08-26 04:34:00 +02:00
Mounir IDRASSI 1cf6150458 Documentation: Indicate TrueCrypt 6.x and 7.x for the supported TrueCrypt volumes until 1.25.9 2024-08-25 22:19:49 +02:00
Mounir IDRASSI 500cbeebdf Translations: Update Russian translation by Dmitry Yerokhin 2024-08-25 21:45:32 +02:00
Mounir IDRASSI fa874cc611 Linux: Add script to sign generated rpms 2024-08-25 18:56:41 +02:00
Mounir IDRASSI af734f41df Increment version to 1.26.14. Set release date to August 25th. 2024-08-25 09:55:44 +02:00