Protecting Your Git Repositories: A Comprehensive Guide to Using Gitleaks for Securing Sensitive Information

Cuncis
4 min readMar 16, 2023

Gitleaks is an open-source tool designed to prevent sensitive data from being committed to Git repositories. It works by scanning Git repositories for potential secrets such as passwords, API keys, and other confidential information that should not be publicly exposed.

The tool is highly customizable and supports a wide range of file formats, including text, binary, and even encrypted files. Gitleaks can be used either as a command-line tool or as part of a CI/CD pipeline to help catch sensitive data before it is committed to a repository.

Gitleaks uses regular expressions to identify potentially sensitive data, and its rules can be easily customized to match specific patterns of interest. It also provides support for masking specific patterns or ignoring certain files or directories altogether.

Gitleaks can be useful for anyone working with Git repositories, especially those who deal with sensitive data. It is an effective way to prevent accidental leaks and ensure that confidential information remains protected.

Here is a cheat sheet for using Gitleaks:

  1. Install Gitleaks: You can install Gitleaks on your system using the package manager for your operating system, or by downloading the binary release from the Gitleaks GitHub page.
  2. Configure Gitleaks: You can configure Gitleaks by creating a configuration file with the rules that you want to enforce. By default, Gitleaks comes with a set of predefined rules that are designed to detect common types of sensitive information, such as passwords, API keys, and SSH keys.
  3. Scan repositories: You can scan repositories using Gitleaks by running the command gitleaks --repo=<path to repository> from the command line. You can also specify additional options, such as the number of threads to use and the output format.
  4. Integrate with CI/CD pipelines: You can integrate Gitleaks into your CI/CD pipeline to automatically scan repositories for potential leaks. You can do this by adding a Gitleaks step to your pipeline configuration file and specifying the repository to scan.
  5. Customize rules: You can customize Gitleaks rules to match specific patterns of interest. This can be done by editing the configuration file and adding or modifying regular expressions.
  6. Mask sensitive information: You can configure Gitleaks to mask specific patterns of sensitive information, such as passwords or API keys, in its output. This can be done by specifying the --redact option when running Gitleaks.
  7. Ignore files or directories: You can configure Gitleaks to ignore specific files or directories when scanning repositories. This can be done by adding rules to the configuration file that exclude files or directories based on their name or location.

Here are some common example commands for Gitleaks:

Scan a single repository:

gitleaks --repo=/path/to/repository

This command will scan the specified repository for potential leaks of sensitive information.

Scan multiple repositories:

gitleaks --config=config.toml

This command will scan all repositories listed in the config.toml configuration file.

[[repos]]
repo = "/path/to/repo1"
branches = ["master", "develop"]
[[repos.rules]]
regex = "password"
max_severity = "high"
[[repos.rules]]
regex = "AWS_SECRET_ACCESS_KEY"
max_severity = "medium"

[[repos]]
repo = "/path/to/repo2"
branches = ["main"]
[[repos.rules]]
regex = "api_key"
max_severity = "high"

In this example, there are two repositories listed, each with their own set of rules to enforce. The first repository is located at /path/to/repo1 and has two branches specified: master and develop. This repository has two rules specified: one to detect the word "password" with a maximum severity of "high," and another to detect the string "AWS_SECRET_ACCESS_KEY" with a maximum severity of "medium."

The second repository is located at /path/to/repo2 and has only one branch specified: main. This repository has a single rule to detect the string "api_key" with a maximum severity of "high."

Specify output format:

gitleaks --repo=/path/to/repository --format=json

This command will output the results of the scan in JSON format.

Redact sensitive information:

gitleaks --repo=/path/to/repository --redact

This command will redact sensitive information, such as passwords and API keys, from the output of the scan.

Ignore specific files or directories:

gitleaks --repo=/path/to/repository --exclude-path=path/to/excluded/directory

This command will ignore the specified directory when scanning the repository.

Specify number of threads:

gitleaks --repo=/path/to/repository --threads=4

This command will use four threads to scan the repository, which can help speed up the scanning process.

Scan a specific branch:

gitleaks --repo=/path/to/repository --branch=my-branch

This command will scan only the specified branch of the repository.

These are just a few examples of the many options and commands available in Gitleaks. For more information, you can check out the Gitleaks documentation or run gitleaks --help from the command line.

Conclusion

Gitleaks is a powerful open-source tool designed to prevent sensitive data from being committed to Git repositories. It works by scanning Git repositories for potential secrets such as passwords, API keys, and other confidential information that should not be publicly exposed. The tool is highly customizable and supports a wide range of file formats, and can be used either as a command-line tool or as part of a CI/CD pipeline to help catch sensitive data before it is committed to a repository. By following the example commands and tips provided in the cheat sheet, you can effectively use Gitleaks to scan and protect your repositories against potential leaks of sensitive information.

--

--

Cuncis

Penetration Tester | Bug Hunter | Ethical Hacker - Connect with me on https://twitter.com/wh1te_h0le