CVE-2026-49145: App::Ack Arbitrary File Read via Malicious .ackrc Configuration
App::Ack, a popular code-search tool for Perl developers, has a vulnerability in how it handles configuration files. When developers clone or use a project containing a malicious .ackrc configuration file, the tool can be tricked into reading and processing arbitrary files on the system—even those outside the project directory. This happens because the security blocklist that prevents dangerous options in project-level configs is incomplete. An attacker who commits a crafted .ackrc to a repository can exploit this to extract sensitive file contents when other developers run ack.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 7.5 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Weaknesses (CWE)
- CWE-426, CWE-73
- Affected products
- 0 configuration(s)
- Published / Modified
- 2026-07-08 / 2026-07-08
NVD description (verbatim)
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.
2 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
App::Ack loads project-level configuration from .ackrc files by searching up the directory hierarchy. The ConfigLoader module maintains a blocklist of options that should not be allowed in untrusted project configs to prevent abuse. However, the --files-from option—which specifies a file containing a list of paths to search—was not included in this blocklist. An attacker can set --files-from in a committed .ackrc to point to a file path with carefully chosen targets. When ack executes, it reads the listed files and performs its search operation on them, effectively reading arbitrary file contents and printing matching lines. The vulnerability affects all versions through 3.10.0, though version 3.10.0 did add --follow to the blocklist, indicating partial awareness of similar risks.
Business impact
For development teams using App::Ack, this vulnerability enables information disclosure attacks through repository compromise. A malicious or compromised third-party project can leak sensitive data when developers run ack in their environment. Risks include exposure of configuration files, source code from other projects, environment secrets, or other files accessible to the user running ack. The impact depends on file access permissions and what an attacker can target, but in shared or CI/CD environments, the scope for damage increases. Teams relying on ack for code search should treat this as a disclosure risk, particularly when working with untrusted or open-source repositories.
Affected systems
App::Ack version 3.10.0 and all earlier versions are affected. The vulnerability is specific to the App::Ack Perl module and affects any system where ack is installed and used to search code within projects. Developers on Linux, macOS, and Windows systems running Perl and ack are potentially exposed if they clone repositories with malicious .ackrc files.
Exploitability
Exploitability is straightforward: an attacker needs only to commit a .ackrc file to a repository and include --files-from pointing to target files. No special privileges, authentication, or complex setup is required on the attacker's side. The vulnerability triggers automatically when a developer runs ack in the affected project directory. However, exploitation is limited by the file-system permissions of the user running ack and requires that the attacker know or guess useful file paths. The vulnerability is not currently listed in CISA's Known Exploited Vulnerabilities catalog, but the low barrier to attack makes timely patching important.
Remediation
The primary remediation is to update App::Ack to a patched version once released by the maintainers. In the interim, teams should avoid running ack on untrusted or unreviewed repositories and consider disabling or restricting ack's use in CI/CD pipelines until patches are available. Code review practices should include scrutiny of .ackrc files in pull requests from external contributors. Users can also configure tools to ignore or reject project .ackrc files if their ack version or wrapper supports such controls.
Patch guidance
Check the App::Ack project repository and CPAN for a patched release addressing CVE-2026-49145. Verify against the official vendor advisory for the exact version number and release date. Once available, apply the patch by updating the Perl module using your package manager (cpan, cpanm, or your OS distribution's package repository). Test the patched version to ensure ack still functions as expected for your workflows before deploying broadly.
Detection guidance
Review committed .ackrc files in your repositories, particularly in recently added or external-contribution branches, for suspicious --files-from options. Monitor filesystem access from ack processes in sensitive environments using syscall tracing or audit logs. If you suspect exposure, search your .ackrc history using git log to identify when and by whom a malicious option might have been introduced. Additionally, check execution logs to see if ack was run on affected projects by other developers or CI systems.
Why prioritize this
While the vulnerability requires repository access to exploit and has a moderate attack surface, the ease of attack and potential for sensitive data disclosure warrant prompt attention. Teams actively using ack should prioritize patching, especially those with CI/CD systems or shared development environments. The vulnerability is clearly exploitable and impacts confidentiality, justifying a HIGH severity rating.
Risk score, explained
The CVSS 3.1 score of 7.5 (HIGH) reflects a network-accessible attack vector, low attack complexity, no privilege requirements, and no user interaction—all favorable to the attacker. However, the score assigns zero impact to confidentiality and integrity, focusing impact entirely on availability, which may understate the information-disclosure risk in practice. The actual business risk depends on which files an attacker can target and what data they contain in your environment.
Frequently asked questions
Can ack be exploited if I have not committed a .ackrc to my project?
No. The vulnerability requires a malicious .ackrc file present in the project directory tree. If you do not use project-level configuration files, you are not at risk from this specific vulnerability. However, if .ackrc files are inherited from parent directories or if an attacker can add one, the risk exists.
Does this vulnerability allow arbitrary code execution?
No. The vulnerability is limited to reading arbitrary files and printing matching lines to output. It does not permit code execution or write access to the filesystem. The disclosed information depends on file contents and what an attacker specifies in --files-from.
What should I do if ack is not actively used in my environment?
If your team does not regularly use ack or if it is not part of your standard toolchain, the risk is minimal. However, if ack is installed as a dependency of other Perl packages, you may still be exposed. Verify your inventory and update as a precaution if patches are available.
Are there alternative tools I should consider while waiting for a patch?
Yes. Other code search tools such as grep, ripgrep (rg), or The Silver Searcher (ag) can serve as alternatives. If switching is not feasible in the short term, restrict ack execution to trusted, internal repositories and avoid running it on external or third-party code.
This analysis is provided for informational purposes to assist security decision-making. The vulnerability details, affected versions, and remediation guidance are based on published CVE data and vendor advisories available as of the publication date. Verify all patch versions and official remediation steps against the original vendor advisory before deploying to production. Security teams should conduct their own risk assessment based on their specific environment, asset inventory, and use of App::Ack. This explainer does not constitute professional security advice and should be reviewed in context with your organization's threat model and policies. Source: NVD (public-domain), retrieved 2026-08-17. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2025-52465HIGHGeoServer Master Password Plaintext Dump Vulnerability
- CVE-2025-71324HIGHFlowise Unauthenticated Path Traversal & Database Disclosure
- CVE-2026-10303HIGHServerCo getssl ACME Token Validation Flaw Enables Path Traversal
- CVE-2026-10694HIGHRemote File Inclusion in SourceCodester Online Food Ordering System 2.0
- CVE-2026-10816HIGHNetScaler ADC and Gateway Unauthenticated Arbitrary File Read Vulnerability
- CVE-2026-11400HIGHAWS Advanced JDBC Wrapper Privilege Escalation in Aurora PostgreSQL
- CVE-2026-11401HIGHAurora PostgreSQL Privilege Escalation via Untrusted Search Path in AWS Advanced Go Wrapper
- CVE-2026-11527HIGHConfig::IniFiles Command Injection and File Overwrite Vulnerability