Friday, December 17, 2021

ClamAV Bugzilla new ticket creation will redirect to GitHub Issues

In early 2021, we made a decision to switch to using GitHub directly. Before then, our primary Git repository was sequestered to the Cisco corporate network. The public GitHub repository was just a mirror. That made it tougher for us to connect to and work with contributors from the ClamAV community. Our daily routines drew our attention away from GitHub.

At the same time, we also settled on a plan for how we could test using GitHub Issues for ClamAV bug reports. Initially, this would supplement our aging Bugzilla server. While Bugzilla requires users to make an account on our server, enabling GitHub Issues would open up bug reporting to the wider GitHub community that already has an account.

Since enabling GitHub Issues at the start of June, we have found that using GitHub Issues has been a very positive experience. At this point, most of our reports come in through GitHub Issues. With the aid of issue templates, the quality of bug reports coming through GitHub Issues has also been of a higher caliber than those coming through Bugzilla. With users following guidance in the template, the bug reports are generally easier to triage and respond to intelligently. 

All that being said, we will disable Bugzilla ticket creation so we can focus all new bug reports towards GitHub Issues. Effective immediately, the new ticket creation form on bugzilla.clamav.net will redirect users to the new issue creation page on our primary ClamAV repository on GitHub.com.

Existing open tickets on Bugzilla will remain open for now, and the Bugzilla server is expected to remain available through 2022 as we complete this transition. 

If you have an open ticket on Bugzilla and would like to help migrate it to GitHub Issues, we would appreciate the help. If you choose to migrate any tickets from Bugzilla to GitHub Issues, please add references in each ticket and close the original Bugzilla ticket(s) to assist our team with the ticket queue maintenance.


Thank you!

Micah

Tuesday, December 14, 2021

Reminder: ClamAV 0.102, 0.101 End of Life is Jan 3, 2022

As a reminder, the ClamAV 0.102 and 0.101 releases will reach its end of life (EOL) in less than one month's time on Jan. 3, 2022. After this date, ClamAV 0.102, and 0.101 and all patch versions will be blocked from downloading new signatures from database.clamav.net. 

For information about the EOL policy, visit the ClamAV online documentation.

Wednesday, November 3, 2021

ClamAV 0.103.4 and 0.104.1 patch releases

ClamAV 0.103.4 LTS and 0.104.1 patch versions are out now. Both of these can be found on clamav.net/downloads, with 0.104.1 as the main release and 0.103.4 under "Previous Stable Releases."


0.103.4

ClamAV 0.103.4 is a critical patch release with the following fixes:

  • FreshClam:

    • Add a 24-hour cool-down for FreshClam clients that have received an HTTP 403 (Forbidden) response from the CDN. This is to reduce the volume of 403-response data served to blocked FreshClam clients that are configured with a tight update-loop.
    • Fixed a bug where FreshClam treats an empty CDIFF as an incremental update failure instead of as an intentional request to download the whole CVD.
  • ClamDScan: Fix a scan error when broken symlinks are encountered on macOS with "FollowDirectorySymlinks" and "FollowFileSymlinks" options disabled.

  • Overhauled the scan recursion / nested archive extraction logic and added new limits on embedded file-type recognition performed during the "raw" scan of each file. This limits embedded file-type misidentification and prevents detecting embedded file content that is found/extracted and scanned at other layers in the scanning process.

  • Fix an issue with the FMap module that failed to read from some nested files.

  • Fixed an issue where failing to load some rules from a Yara file containing multiple rules may cause a crash.

  • Fixed assorted compiler warnings.

  • Fixed assorted Coverity static code analysis issues.

  • Scan limits:

    • Added virus-name suffixes to the alerts that trigger when a scan limit has been exceeded. Rather than simply Heuristics.Limits.Exceeded, you may now see limit-specific virus-names, to include:
      • Heuristics.Limits.Exceeded.MaxFileSize
      • Heuristics.Limits.Exceeded.MaxScanSize
      • Heuristics.Limits.Exceeded.MaxFiles
      • Heuristics.Limits.Exceeded.MaxRecursion
      • Heuristics.Limits.Exceeded.MaxScanTime
    • Renamed the Heuristics.Email.ExceedsMax.* alerts to align with the other limit alerts names. These alerts include:
      • Heuristics.Limits.Exceeded.EmailLineFoldcnt
      • Heuristics.Limits.Exceeded.EmailHeaderBytes
      • Heuristics.Limits.Exceeded.EmailHeaders
      • Heuristics.Limits.Exceeded.EmailMIMEPartsPerMessage
      • Heuristics.Limits.Exceeded.EmailMIMEArguments
    • Fixed an issue where the Email-related scan limits would alert even when the "AlertExceedsMax" (--alert-exceeds-max) scan option is not enabled.
    • Fixes an issue in the Zip parser where exceeding the "MaxFiles" limit or the "MaxFileSize" limit would abort the scan but would fail to alert. The Zip scan limit issues were independently identified and reported by Aaron Leliaert and Max Allan.
  • Fixed a leak in the Email parser when using the --gen-json scan option.

  • Fixed an issue where a failure to record metadata in the Email parser when using the --gen-json scan option could cause the Email parser to abort the scan early and fail to extract and scan additional content.

  • Fixed a file name memory leak in the Zip parser.

  • Fixed an issue where certain signature patterns may cause a crash or cause unintended matches on some systems when converting characters to uppercase if a UTF-8 unicode single-byte grapheme becomes a multi-byte grapheme. Patch courtesy of Andrea De Pasquale.

Other fixes backported from 0.104.0:

  • Fixed a crash in programs that use libclamav when the programs don't set a callback for the "virus found" event. Patch courtesy of Markus Strehle.

  • Added checks to the the SIS archive parser to prevent an SIS file entry from pointing to the archive, which would result in a loop. This was not an actual infinite loop, as ClamAV's scan recursion limit limits the depth of nested archive extraction.

  • ClamOnAcc: Fixed a socket file descriptor leak that could result in a crash when all available file descriptors are exhausted.

  • FreshClam: Fixed an issue where FreshClam would download a CVD repeatedly if a zero-byte CDIFF is downloaded or if the incremental update failed and if the CVD downloaded after that is older than advertised. Patch courtesy of Andrew Williams.

  • ClamDScan:

    • Fixed a memory leak of the scan target filename when using the --fdpass or --stream options.
    • Fixed an issue where ClamDScan would fail to scan any file after excluding a file with the "ExcludePath" option when using when using the --multiscan (-m) option along with either --fdpass or --stream. Also fixed a memory leak of the accidentally-excluded paths in this case.
    • Fixed a single file path memory leak when using --fdpass.
    • Fixed an issue where the "ExcludePath" regex may fail to exclude absolute paths when the scan is invoked with a relative path.

Special thanks to the following for code contributions and bug reports:

  • Aaron Leliaert
  • Andrea De Pasquale
  • Andrew Williams
  • Markus Strehle
  • Max Allan

 

0.104.1

ClamAV 0.104.1 is a critical patch release with the following fixes:

  • FreshClam:

    • Add a 24-hour cool-down for FreshClam clients that have received an HTTP 403 (Forbidden) response from the CDN. This is to reduce the volume of 403-response data served to blocked FreshClam clients that are configured with a tight update-loop.
    • Fixed a bug where FreshClam treats an empty CDIFF as an incremental update failure instead of as an intentional request to download the whole CVD.
  • ClamDScan: Fix a scan error when broken symlinks are encountered on macOS with "FollowDirectorySymlinks" and "FollowFileSymlinks" options disabled.

  • Overhauled the scan recursion / nested archive extraction logic and added new limits on embedded file-type recognition performed during the "raw" scan of each file. This limits embedded file-type misidentification and prevents detecting embedded file content that is found/extracted and scanned at other layers in the scanning process.

  • Fix an issue with the FMap module that failed to read from some nested files.

  • Fixed an issue where failing to load some rules from a Yara file containing multiple rules may cause a crash.

  • Fixed assorted compiler warnings.

  • Fixed assorted Coverity static code analysis issues.

  • Scan limits:

    • Added virus-name suffixes to the alerts that trigger when a scan limit has been exceeded. Rather than simply Heuristics.Limits.Exceeded, you may now see limit-specific virus-names, to include:
      • Heuristics.Limits.Exceeded.MaxFileSize
      • Heuristics.Limits.Exceeded.MaxScanSize
      • Heuristics.Limits.Exceeded.MaxFiles
      • Heuristics.Limits.Exceeded.MaxRecursion
      • Heuristics.Limits.Exceeded.MaxScanTime
    • Renamed the Heuristics.Email.ExceedsMax.* alerts to align with the other limit alerts names. These alerts include:
      • Heuristics.Limits.Exceeded.EmailLineFoldcnt
      • Heuristics.Limits.Exceeded.EmailHeaderBytes
      • Heuristics.Limits.Exceeded.EmailHeaders
      • Heuristics.Limits.Exceeded.EmailMIMEPartsPerMessage
      • Heuristics.Limits.Exceeded.EmailMIMEArguments
    • Fixed an issue where the Email-related scan limits would alert even when the "AlertExceedsMax" (--alert-exceeds-max) scan option is not enabled.
    • Fixes an issue in the Zip parser where exceeding the "MaxFiles" limit or the "MaxFileSize" limit would abort the scan but would fail to alert. The Zip scan limit issues were independently identified and reported by Aaron Leliaert and Max Allan.
  • Fixed a leak in the Email parser when using the --gen-json scan option.

  • Fixed an issue where a failure to record metadata in the Email parser when using the --gen-json scan option could cause the Email parser to abort the scan early and fail to extract and scan additional content.

  • Fixed a file name memory leak in the Zip parser.

  • Fixed an issue where certain signature patterns may cause a crash or cause unintended matches on some systems when converting characters to uppercase if a UTF-8 unicode single-byte grapheme becomes a multi-byte grapheme. Patch courtesy of Andrea De Pasquale.

  • CMake:

    • Fix a packaging issue with the Windows *.msi installer so that it will include all of the required files.
    • Add support for developer code-signing on macOS during the build.
    • Fix an issue finding and linking with the tinfo library on systems where tinfo is separate from ncurses. Patch courtesy of Luca Barbato.
  • Tests: Improved the Freshclam incremental update tests to verify correct behavior when a zero-byte CDIFF is downloaded and the CVD served to FreshClam is older than advertised.

  • Docker: Remove the freshclam.dat file when building the Docker image with the databases-included so FreshClam agents running in the container will have a unique ID in the HTTP User-Agent.

Special thanks to the following for code contributions and bug reports:

  • Aaron Leliaert
  • Andrea De Pasquale
  • Luca Barbato
  • Max Allan

Friday, October 29, 2021

ClamAV 0.100 End of Life TODAY and reminder of upcoming 0.101 and 0.102 EOL

The ClamAV 0.100 has reached End of Life (EOL) today and is now blocked from receiving signature database updates, as indicated in our initial blog post in June, and our reminder in September.

The ClamAV 0.101 and 0.102 releases will reach EOL in a little over two month's time on Jan. 3, 2022. After this date, ClamAV 0.101 and 0.102 and all patch versions will be blocked from downloading new signatures from database.clamav.net.

Please upgrade to ClamAV 0.103.3 LTS or newer to ensure continued access to the latest official malware detection signature databases.

For information about the EOL policy, visit the ClamAV online documentation.

Monday, September 27, 2021

Reminder: ClamAV 0.100 End of Life is October 29, 2021

As a reminder, the ClamAV 0.100 release will reach its end of life (EOL) in one month's time on Oct. 29, 2021. After this date, ClamAV 0.100 and all patch versions will be blocked from downloading new signatures from database.clamav.net. 

For information about the EOL policy, visit the ClamAV online documentation.

Friday, September 3, 2021

Changes to ClamAV end-of-life policy and a new Long Term Support policy

Today, we're announcing changes to the ClamAV End-of-Life (EOL) policy to include a new Long Term Support program.

ClamAV 0.104.0 released

ClamAV 0.104.0 is available as an official release as of today.

We are also announcing a new Long Term Support (LTS) program today in an update to our End-of-Life (EOL) policy. The LTS will start retroactively with ClamAV 0.103, the previous feature release. This new LTS policy extends the life of 0.103 up through September 2023 and will facilitate the production of more frequent feature releases while enabling users to rely on a supported version for years to come if they cannot keep pace with the feature release cadence. For full details about the Long Term Support program, you can see the LTS announcement blog post and review the LTS policy in our online documentation.

We're also introducing new install packages to make it easier for folks to upgrade without having to build ClamAV from source and without having to wait for a community volunteer to package the latest release. You can find the new install packages on the ClamAV.net Downloads Page.

Thursday, August 19, 2021

ClamAV 0.104.0 Second Release Candidate is here!

Today we are publishing a second release candidate for 0.104.0. Please help us verify that 0.104.0-rc2 works on your systems and that we have resolved the concerns you reported with the first release candidate. We need your feedback, so let us know what you find and join us on the ClamAV mailing list, or on our Discord.

In particular, we'd love your feedback on the new Debian and RPM packages (see below) and on the install documentation on docs.clamav.net.

For details about what is new in the 0.104 feature release, please refer to the announcement for the first release candidate.


What changed since the first release candidate

First and foremost, we are listening to your concerns about the build system change from Autotools to CMake, and about changes coming in a future feature release when we add the Rust programming language toolchain into our build requirements. We can't bring back Autotools, but we hope that the following will help.

  1. We are introducing a Long Term Support (LTS) program that will begin with the 0.103 feature release. Users will be required to stay up to date with the latest patch versions (e.g., 0.103.3) within the 0.103 feature series, but will have the peace-of-mind that the 0.103 feature release will receive critical patch versions with a stable ABI up until End-of-Life in September 2023. Stay tuned for a separate blog post introducing the full details of our LTS program. We will also add a version-support-matrix to our online documentation in tandem with the LTS blog post for easy reference.

  2. We plan to increase our feature release cadence to make it easier to plan and to get new features and efficacy improvements into your hands faster. So, to make it easier for you to stay up-to-date with the latest stable release, we are introducing new package installers for macOS and for RPM-based and Debian-based Linux distributions. These new packages will be available for download on the clamav.net Downloads page. You can find installation instructions for these packages in our online documentation. Please note that the Linux packages unfortunately do not include clamav-milter at this time, and that we are still working on the signing & notarization process for the macOS installer, so it may not work for users on the latest macOS version.

In addition to the above, we've resolved the following issues identified during the first release candidate:

  • Increased the functionality level (FLEVEL) for the 0.104 release to make space for additional 0.103 (LTS) patch versions. See the Version & FLEVEL reference.
  • Improvements installation instructions in INSTALL.md and in the online documentation.
  • Fixed iconv / libiconv detection in the CMake configuration process when -Werror=return-type is enabled, such as in the openSUSE packaging environment. See PR-233.
  • Fixed broken CMake build when RAR support is intentionally disabled and test-support is enabled. See PR-237.
  • Fixed broken CMake build on systems that do not provide format string macros for standard integer types. See PR-231.
  • Improved long file path support on Windows. (Disclaimer: presently requires user to opt-in with a registry key change). See PR-229.
  • Fixed a segfault and socket file descriptor leak in ClamOnAcc. See PR-227.
  • Fixed an error reported by ClamD when scanning directories on Windows. See PR-230.
  • Fixed issue with Freshclam support for Universal Naming Convention (UNC) paths on Windows. See PR-226.
  • Added missing environment variable feature documentation to the manpages. See PR-254.
  • Fixed an assortment of issues identified by Coverity static analysis. See PR-221.
  • Tuned the Valgrind suppression rules for the public test suite to resolve a false positive that caused intermittent ClamD test failures. See PR-238.
  • Fixed the mspack library name to deconflict with system installed mspack packages. See PR-234.
  • Fixed a false positive in the ClamD tests, reported by Valgrind when compiling with Clang. See PR-236.

Special thanks to Arjen de Korte and Mark Fortescue for contributing patches to fix some of the above issues. And thank you to so many of you who chimed in on the mailing lists, on Discord, and on GitHub Issues to identify issues and share your experiences with the first release candidate.

Thursday, July 22, 2021

ClamAV 0.104.0 Release Candidate is here!

We are pleased to announce the ClamAV 0.104.0 release candidate.

Please help us validate this release. We need your feedback, so let us know what you find and join us on the ClamAV mailing list, or on our Discord.

This release candidate phase is only expected to last about two to four weeks before the 0.104.0 Stable version will be published. Take this opportunity to verify that you 0.104.0 can build and run in your environment. 

Wednesday, July 21, 2021

PSA: FreshClam database download issue

We've received several reports of users experiencing issues with FreshClam triggered by last week's update to the main and daily CVD databases

FreshClam's primary advantage over tools like wget and curl, in addition to automatic testing of new databases, is the ability to perform an incremental update using database patch files. But when a database change is so large that a patch file is not efficient, we issue an empty patch file. This empty file will cause FreshClam to download the entire database instead. Unfortunately, our recent update using the empty patch file method has revealed a couple of issues. 

Tuesday, July 13, 2021

New Main & Daily CVD's are incoming

 Tomorrow, Wednesday July 14th, we are planning on publishing a brand new main.cvd and daily.cvd, as we do periodically to move more of the long term signatures into the main.cvd and make the daily.cvd smaller again.  

This will have an impact on your downloads of these files (as every ClamAV instance will have to re-download both files), so you may see a spike in your bandwidth usage.

We will monitor the situation on the mirror side and make any adjustments necessary, but we anticipate no issues.

Tuesday, June 29, 2021

ClamAV EOL of 0.100.x versions

Effective Oct. 29, 2021, ClamAV 0.100.0 (and all patch versions) will no longer be supported in accordance with ClamAV's EOL policy

End of life (EOL) for ClamAV means:

  • We will no longer be testing against that version when we write signatures.
  • We may break that version with something with a future release.
  • Signature updates for that version will be blocked when attempting to download from the mirror update system.

Please upgrade to the newest version of ClamAV, currently at 0.103.3, available for download now!

As always, thank you for using ClamAV.

Monday, June 28, 2021

New online documentation and other improved open-source processes

By Micah Snyder.

I'm excited to announce that we are making several changes that will improve how we work with the open-source community. We've also made several other changes to ClamAV.net over the past year that we are excited to formally unveil today, including a new security policy and new build advisories. 

Monday, June 21, 2021

ClamAV 0.103.3 patch release

ClamAV 0.103.3 is out now. Users can head over to clamav.net/downloads to download the release materials.

Thursday, June 17, 2021

Join ClamAV on Discord

As a result of changes to Freenode IRC management, the #clamav channel on the Freenode IRC server is no longer being monitored or maintained by the ClamAV team at Cisco Talos. 

Almost two years ago, the ClamAV team added Discord as an alternative to IRC, with a general channel we bridged to the IRC channel.

Wednesday, May 5, 2021

"clamav-devel" GitHub repository name change to "clamav"

On Tuesday, May 18th the Cisco-Talos "clamav-devel" repository on GitHub will be renamed to "clamav".

This is just an advisory notice. GitHub automatically redirects requests for renamed repositories so that the old URLs remain functional.

However, those who have clones-of or links-to this git repository may wish to update the URLs after the rename is complete. For example:

http://github.com/Cisco-Talos/clamav-devel

  to http://github.com/Cisco-Talos/clamav

http://github.com/Cisco-Talos/clamav-devel.git

  to http://github.com/Cisco-Talos/clamav.git

git@github.com:Cisco-Talos/clamav-devel.git

  to git@github.com:Cisco-Talos/clamav.git

 

Thank you!

Wednesday, April 7, 2021

ClamAV 0.103.2 security patch release

ClamAV 0.103.2 is out now. Users can head over to clamav.net/downloads to download the release materials.

This is a security patch release with the following fixes:

  • CVE-2021-1386: Fix for UnRAR DLL load privilege escalation. Affects 0.103.1 and prior on Windows only.
  • CVE-2021-1252: Fix for Excel XLM parser infinite loop. Affects 0.103.0 and 0.103.1 only.
  • CVE-2021-1404: Fix for PDF parser buffer over-read; possible crash. Affects 0.103.0 and 0.103.1 only.
  • CVE-2021-1405: Fix for mail parser NULL-dereference crash. Affects 0.103.1 and prior.
  • Fix possible memory leak in PNG parser.
  • Fix ClamOnAcc scan on file-creation race condition so files are scanned after their contents are written.
  • FreshClam: Deprecate the SafeBrowsing config option. The SafeBrowsing option will no longer do anything. For more details, see our blog post from last year about the future of the ClamAV Safe Browsing database
    Tip: If creating and hosting your own safebrowing.gdb database, you can use the DatabaseCustomURL option in freshclam.conf to download it.
  • FreshClam: Improved HTTP 304, 403 and 429 handling.
  • FreshClam: Added the mirrors.dat file back to the database directory.
    This new mirrors.dat file will store:
    • A randomly generated UUID for the FreshClam User-Agent.
    • A retry-after timestamp that so FreshClam won't try to update after having received an HTTP 429 response until the Retry-After timeout has expired.
  • FreshClam will now exit with a failure in daemon mode if an HTTP 403 (Forbidden) was received because the outcome won't change if it tries again later. The FreshClam user will have to take appropriate action to get unblocked.
  • Fix the FreshClam mirror-sync issue where a downloaded database is "older than the version advertised."
If a new CVD download gets a version that is older than advertised, FreshClam will keep the older version and retry the update so that the incremental update process (CDIFF patch process) will update to the latest version.

Are you still attempting to download safebrowsing.cvd?

 It has come to our attention that a few of you (about 515,000 of you, to be more accurate), are still attempting to download the safebrowsing.cvd file from the official ClamAV mirrors.  This tells us that these attempted downloads are an installation of FreshClam (a non-updated FreshClam.conf or other script) that have not been updated to remove the safebrowsing database. 

We discontinued the distribution of the SafeBrowsing database in November of 2019, as indicated in our blog post back in June, however these installations of ClamAV that have no updated and continue to download the safebrowsing.cvd account for nearly 10TB of traffic a month, just for that file.

As a result, we have put in a block to make any attempts to download the safebrowsing.cvd result in a 403 error.

Please take a look at your FreshClam.conf file, in our upcoming version of ClamAV (0.103.2 and beyond), we have removed all of the code that attempts to download the safebrowsing db from our servers, (so you should update) however, for those of you can't update right away, please find this line:

SafeBrowsing yes

In your Freshclam.conf file, and commenting it out like this:

#SafeBrowsing yes

Thank you for your support of ClamAV!

Friday, March 19, 2021

ClamAV, CVDs, CDIFFs and the magic behind the curtain

The amount of malicious files that ClamAV can detect has increased immensely over the past few years, but with this increase in efficacy comes some challenges with scale.  

Some of these challenges have required drastic measures to ensure the effective operation of the ClamAV infrastructure, including blocking certain methods of downloading the official ClamAV signature sets. To give the community more insight into these matters, we’d like to discuss some of these challenges in-depth and provide insight into future changes and optimizations coming to the product.

Tuesday, February 9, 2021

ClamAV EOL versions prior to 0.100

ClamAV community, we want to inform you that, effective March 1, ClamAV 0.99.0 (and all minor versions) will no longer be supported in accordance with ClamAV's EOL policy.  For clarification, anything prior to 0.100.0.

End of life (EOL) for ClamAV essentially means that we will no longer be testing against that version when we write signatures, and we may break something with a future release. So, while signatures may work past March 1, we are no longer testing that configuration. 

Please upgrade to the newest version of ClamAV, currently at 0.103.1, available for download now!

As always, thank you for using ClamAV.

Wednesday, February 3, 2021

ClamAV 0.103.1 patch release

ClamAV 0.103.1 is out now. Users can head over to clamav.net/downloads to download the release materials.
 
The latest version of ClamAV contains the following fixes and improvements:

Notable changes

  •  Added a new scan option to alert on broken media (graphics) file formats.

    This feature mitigates the risk of malformed media files intended to exploit vulnerabilities in other software. At present, media validation exists for JPEG, TIFF, PNG and GIF files. To enable this feature, set AlertBrokenMedia yes in clamd.conf for use with ClamD, or use the --alert-broken-media option when using ClamScan. These options are disabled by default in this patch release but may be enabled in a subsequent release.

    Application developers may enable this scan option by enabling CL_SCAN_HEURISTIC_BROKEN_MEDIA for the heuristic scan option bit field.
  • Added CL_TYPE_TIFF, CL_TYPE_JPEG types to match GIF and PNG typing behavior. BMP and JPEG 2000 files will continue to detect as CL_TYPE_GRAPHICS because ClamAV does not yet have BMP or JPEG 2000 format-checking capabilities.

 Bug fixes

  • Fixed PNG parser logic bugs that caused an excess of parsing errors and fixed a stack exhaustion issue affecting some systems when scanning PNG files. PNG file type detection was disabled via signature database update for ClamAV version 0.103.0 to mitigate the effects from these bugs.
  • Fixed an issue where PNG and GIF files no longer work with Target:5 graphics signatures if detected as CL_TYPE_PNG or CL_TYPE_GIF rather than as CL_TYPE_GRAPHICS. Target types now support up to 10 possible file types to make way for additional graphics types in future releases.
  • Fixed ClamOnAcc's --fdpass option.

    File descriptor passing (or "FD-passing") is a mechanism by which ClamOnAcc and ClamDScan may transfer an open file to ClamD to scan, even if ClamD is running as a non-privileged user and wouldn't otherwise have read-access to the file. This enables ClamD to scan all files without having to run ClamD as root. If possible, ClamD should never be run as root to mitigate the risk in case ClamD is somehow compromised while scanning malware.

    Interprocess file descriptor passing for ClamOnAcc was broken since version 0.102.0 due to a bug introduced by the switch to cURL for communicating with ClamD. On Linux, passing file descriptors from one process to another is handled by the kernel, so we reverted ClamOnAcc to use standard system calls for socket communication when FD-passing is enabled.
  • Fixed a ClamOnAcc stack corruption issue on some systems when using an older version of libcurl. Patch courtesy of Emilio Pozuelo Monfort.
  • Allow ClamScan and ClamDScan scans to proceed even if the realpath lookup failed. This alleviates an issue on Windows scanning files hosted on file-systems that do not support the GetMappedFileNameW() API, such as on ImDisk RAM-disks.
  • Fixed FreshClam's --on-update-execute=EXIT_1 temporary directory cleanup issue.
  • ClamD's log output and VirusEvent feature now provide the scan target's file path instead of a file descriptor. The ClamD socket API for submitting a scan by FD-passing doesn't include a file path. This feature works by looking up the file path by the file descriptor. This feature works on Mac and Linux but is not yet implemented for other UNIX operating systems. FD-passing is not available for Windows.
  • Fixed an issue where FreshClam database validation didn't work correctly when run in daemon mode on Linux/Unix.
  • Fixed scan speed performance issues accidentally introduced in ClamAV 0.103.0 caused by hashing file maps more than once when parsing a file as a new type, and caused by frequent scanning of non-HTML text data with the HTML parser.

Other improvements

  • Scanning JPEG, TIFF, PNG and GIF files will no longer return "parse" errors when file format validation fails. Instead, the scan will alert with the "Heuristics.Broken.Media" signature prefix and a descriptive suffix to indicate the issue, provided that the "alert broken media" feature is enabled.
  • GIF format validation will no longer fail if the GIF image is missing the trailer byte, as this appears to be a relatively common issue in otherwise functional GIFs.
  • Added a TIFF dynamic configuration (DCONF) option that was missing. This will allow us to disable TIFF format validation via signature database update in the event that it proves to be problematic. This feature already exists for many other file types.

Acknowledgments

The ClamAV team thanks Emilio Pozuelo Monfort for their code submissions.