Overview of Haskell security tooling

Gautier DI FOLCO June 29, 2026 [Security] #Tooling #Infrastructure

Here is an overview of the Haskell security infrastructure, detailing the security team, the advisory database, the libraries developed for security metadata, and how downstream tools leverage this data.

The Haskell Security Response Team

The Haskell Security Response Team (SRT) manages the security reporting and advisory workflow for the Haskell ecosystem.

We formed the team to establish a formal process for handling vulnerabilities in Haskell packages, and we outlined our initial organization and objectives in the Q2 2023 report. Since then, we have been gradually moving the ecosystem from ad-hoc vulnerability handling toward a structured repository model.

The Security Advisory Database

The central resource for security advisories is the haskell/security-advisories repository. This database contains Markdown files documenting known vulnerabilities in packages hosted on Hackage.

The repository produces several outputs for consumption by humans and machines:

  1. Human-readable portal: The static website at haskell.github.io/security-advisories/ presents a searchable index of all advisories.
  2. OSV Export: The generated/osv-export branch contains advisories formatted in the Open Source Vulnerabilities (OSV) schema. This allows integration into global vulnerability databases.
  3. Snapshot Export: The generated/snapshot-export branch provides database snapshots designed for offline tools to synchronize.

Security Data Libraries

Within the code/ subdirectory of the advisory repository, we develop several libraries to handle security data programmatically:

Ecosystem Integration

Several downstream tools utilize this security data to protect Haskell applications:

Tutorial: Synchronizing and Querying

We are going to see how to fetch the HSEC database and query it locally for packages with known vulnerabilities.

Note: The tools above are built on the same libraries you can use yourself.

If you want to query the advisory database directly, the hsec-tools and hsec-sync executables let you do so from the command line.

First, initialize/synchronize the local cache with the remote advisory database:

$ hsec-sync sync

Once the cache is synchronized, you can query whether a specific package is affected by known vulnerabilities. For example, to check the aeson package:

$ hsec-tools query is-affected aeson
Affected by:
* [HSEC-2023-0001] Hash flooding vulnerability in aeson
* [HSEC-2026-0007] Denial of Service and Memory Exhaustion in aeson and text-iso8601

Because these packages are published on Hackage, developers can import hsec-core and query the advisory database programmatically in Haskell code without relying on the CLI.

Future Developments

Our current goal is to improve the developer experience by tightening integration with core tooling. This includes:

To learn more about the Security Response Team, report a vulnerability, or get in touch, visit haskell.org/security.