Security Advisories (2)
CVE-2026-49145 (2026-07-08)

App::Ack versions through 3.10.0 for Perl read arbitrary files via --files-from in a project .ackrc. ack searches up the directory hierarchy from the current directory for a project .ackrc and loads its options. The project-source option blocklist in App::Ack::ConfigLoader does not include --files-from, so a project .ackrc can set it to a path whose listed files ack then reads and searches. Version 3.10.0 added --follow to the blocklist; --files-from remains accepted. A project .ackrc committed to an untrusted repository can make ack read files outside the project and print their matching lines.

CVE-2026-49147 (2026-07-08)

App::Ack versions through 3.10.0 for Perl print unsanitised terminal escape sequences from filenames in several output modes. When ack prints a filename whose basename contains terminal control bytes such as ANSI escape sequences, those bytes reach the terminal unchanged. Version 3.10.0 added a _safe_filename helper that sanitises the filenames printed by -f, -g, the colored match heading, and per-match lines, but the --show-types, -l/-L, and -c paths still emit the raw filename. A file whose name embeds cursor-movement or color escapes can overwrite or recolor earlier terminal output, or be passed unchanged to a downstream consumer.

NAME

App::Ack::ConfigFinder

DESCRIPTION

A module that contains the logic for locating the various configuration files.

LOCATING CONFIG FILES

First, ack looks for a global ackrc.

On Windows, this is `ackrc` in either COMMON_APPDATA or APPDATA. If `ackrc` is present in both directories, ack uses both files in that order.
On a non-Windows OS, this is `/etc/ackrc`.

Then, ack looks for a user-specific ackrc if the HOME environment variable is set. This is either $HOME/.ackrc or $HOME/_ackrc.

Then, ack looks for a project-specific ackrc file. ack searches up the directory hierarchy for the first `.ackrc` or `_ackrc` file. If this is one of the ackrc files found in the previous steps, it is not loaded again.

It is a fatal error if a directory contains both .ackrc and _ackrc.

After ack loads the options from the found ackrc files, ack looks at the ACKRC_OPTIONS environment variable.

Finally, ack takes settings from the command line.

METHODS

new

Creates a new config finder.

$finder->find_config_files

Locates config files, and returns a list of them.