Skip to content

Conversation

@techtales-bot
Copy link
Contributor

@techtales-bot techtales-bot bot commented Apr 30, 2025

This PR contains the following updates:

Package Type Update Change OpenSSF
gitleaks/gitleaks repository minor v8.24.3 -> v8.30.0 OpenSSF Scorecard

Note: The pre-commit manager in Renovate is not supported by the pre-commit maintainers or community. Please do not report any problems there, instead create a Discussion in the Renovate repository if you have any questions.


Release Notes

gitleaks/gitleaks (gitleaks/gitleaks)

v8.30.0

Compare Source

Changelog

v8.29.1

Compare Source

Changelog

v8.29.0

Compare Source

Changelog

v8.28.0

Compare Source

Changelog

Optimizations

#​1909 waits to find newlines until a match. This ends up saving a boat load of time since before we were finding newlines for every fragment regardless if a rule matched or not.
#​1908 promoted @​rgmz excellent stopword optimization

Composite Rules (Multi-part or required Rules) #​1905

In v8.28.0 Gitleaks introduced composite rules, which are made up of a single "primary" rule and one or more auxiliary or required rules. To create a composite rule, add a [[rules.required]] table to the primary rule specifying an id and optionally withinLines and/or withinColumns proximity constraints. A fragment is a chunk of content that Gitleaks processes at once (typically a file, part of a file, or git diff), and proximity matching instructs the primary rule to only report a finding if the auxiliary required rules also find matches within the specified area of the fragment.

Proximity matching: Using the withinLines and withinColumns fields instructs the primary rule to only report a finding if the auxiliary required rules also find matches within the specified proximity. You can set:

  • withinLines: N - required findings must be within N lines (vertically)
  • withinColumns: N - required findings must be within N characters (horizontally)
  • Both - creates a rectangular search area (both constraints must be satisfied)
  • Neither - fragment-level matching (required findings can be anywhere in the same fragment)

Here are diagrams illustrating each proximity behavior:

p = primary captured secret
a = auxiliary (required) captured secret
fragment = section of data gitleaks is looking at

    *Fragment-level proximity*               
    Any required finding in the fragment
          ┌────────┐                       
   ┌──────┤fragment├─────┐                 
   │      └──────┬─┤     │ ┌───────┐       
   │             │a│◀────┼─│✓ MATCH│       
   │          ┌─┐└─┘     │ └───────┘       
   │┌─┐       │p│        │                 
   ││a│    ┌─┐└─┘        │ ┌───────┐       
   │└─┘    │a│◀──────────┼─│✓ MATCH│       
   └─▲─────┴─┴───────────┘ └───────┘       
     │    ┌───────┐                        
     └────│✓ MATCH│                        
          └───────┘                        
                                           
                                           
   *Column bounded proximity*
   `withinColumns = 3`                    
          ┌────────┐                       
   ┌────┬─┤fragment├─┬───┐                 
   │      └──────┬─┤     │ ┌───────────┐   
   │    │        │a│◀┼───┼─│+1C ✓ MATCH│   
   │          ┌─┐└─┘     │ └───────────┘   
   │┌─┐ │     │p│    │   │                 
┌──▶│a│  ┌─┐  └─┘        │ ┌───────────┐   
│  │└─┘ ││a│◀────────┼───┼─│-2C ✓ MATCH│   
│  │       ┘             │ └───────────┘   
│  └── -3C ───0C─── +3C ─┘                 
│  ┌─────────┐                             
│  │ -4C ✗ NO│                             
└──│  MATCH  │                             
   └─────────┘                             
                                           
                                           
   *Line bounded proximity*
   `withinLines = 4`                      
         ┌────────┐                        
   ┌─────┤fragment├─────┐                  
  +4L─ ─ ┴────────┘─ ─ ─│                  
   │                    │                  
   │              ┌─┐   │ ┌────────────┐   
   │         ┌─┐  │a│◀──┼─│+1L ✓ MATCH │   
   0L  ┌─┐   │p│  └─┘   │ ├────────────┤   
   │   │a│◀──┴─┴────────┼─│-1L ✓ MATCH │   
   │   └─┘              │ └────────────┘   
   │                    │ ┌─────────┐      
  -4L─ ─ ─ ─ ─ ─ ─ ─┌─┐─│ │-5L ✗ NO │      
   │                │a│◀┼─│  MATCH  │      
   └────────────────┴─┴─┘ └─────────┘      
                                           
                                           
   *Line and column bounded proximity*
   `withinLines = 4`                      
   `withinColumns = 3`                    
         ┌────────┐                        
   ┌─────┤fragment├─────┐                  
  +4L   ┌└────────┴ ┐   │                  
   │            ┌─┐     │ ┌───────────────┐
   │    │       │a│◀┼───┼─│+2L/+1C ✓ MATCH│
   │         ┌─┐└─┘     │ └───────────────┘
   0L   │    │p│    │   │                  
   │         └─┘        │                  
   │    │           │   │ ┌────────────┐   
  -4L    ─ ─ ─ ─ ─ ─┌─┐ │ │-5L/+3C ✗ NO│   
   │                │a│◀┼─│   MATCH    │   
   └───-3C────0L───+3C┴─┘ └────────────┘   

v8.27.2

Compare Source

Changelog

v8.27.1

Compare Source

Changelog

v8.27.0

Compare Source

Changelog

Got another @​bplaxco release. Cheers!

Archive Scanning

Sometimes secrets are packaged within archive files like zip files or tarballs,
making them difficult to discover. Now you can tell gitleaks to automatically
extract and scan the contents of archives. The flag --max-archive-depth
enables this feature for both dir and git scan types. The default value of
"0" means this feature is disabled by default.

Recursive scanning is supported since archives can also contain other archives.
The --max-archive-depth flag sets the recursion limit. Recursion stops when
there are no new archives to extract, so setting a very high max depth just
sets the potential to go that deep. It will only go as deep as it needs to.

The findings for secrets located within an archive will include the path to the
file inside the archive. Inner paths are separated with !.

Example finding (shortened for brevity):

Finding:     DB_PASSWORD=8ae31cacf141669ddfb5da
...
File:        testdata/archives/nested.tar.gz!archives/files.tar!files/.env.prod
Line:        4
Commit:      6e6ee6596d337bb656496425fb98644eb62b4a82
...
Fingerprint: 6e6ee6596d337bb656496425fb98644eb62b4a82:testdata/archives/nested.tar.gz!archives/files.tar!files/.env.prod:generic-api-key:4
Link:        https://github.com/leaktk/gitleaks/blob/6e6ee6596d337bb656496425fb98644eb62b4a82/testdata/archives/nested.tar.gz

This means a secret was detected on line 4 of files/.env.prod. which is in
archives/files.tar which is in testdata/archives/nested.tar.gz.

Currently supported formats:

The compression
and archive
formats supported by mholt's archives package
are supported.

v8.26.0

Compare Source

Changelog

Calling this one @​bplaxco's release as he introduced a really clever method for mixed decoding without sacrificing too much performance. As I stated in his PR, I think he's either a wizard or some time traveling AI. Dude is wicked smaht

Anyways, Gitleaks now supports the following decoders: hex, percent(url enconding), and b64. It's relatively straight forward to add a new decoder so if you're motivated, community contributions are welcomed!

Here's an example:

~/code/gitleaks-org/gitleaks (master) cat decode.txt
text below
aGVsbG8sIHdvcmxkIQ%3D%3D%0A
text above
~/code/gitleaks-org/gitleaks (master) ./gitleaks dir decode.txt --max-decode-depth=2 --log-level=debug

    ○
    │╲
    │ ○
    ○ ░
    ░    gitleaks

4:08PM DBG using stdlib regex engine
4:08PM DBG unable to load gitleaks config from decode.txt/.gitleaks.toml since --source=decode.txt is a file, using default config
4:08PM DBG found .gitleaksignore file: .gitleaksignore
4:08PM DBG segment found: original=[29,38] pos=[29,38]: "%3D%3D%0A" -> "==\n"
4:08PM DBG segment found: original=[11,38] pos=[11,31]: "aGVsbG8sIHdvcmxkIQ==" -> "hello, world!"
4:08PM INF scanned ~50 bytes (50 bytes) in 1.5ms
4:08PM INF no leaks found

v8.25.1

Compare Source

Changelog

Big thanks @​rgmz

v8.25.0

Compare Source

Changelog


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

@techtales-bot techtales-bot bot changed the title chore(pre-commit): update gitleaks/gitleaks ( v8.24.3 → v8.25.1 ) chore(pre-commit): update gitleaks/gitleaks ( v8.24.3 → v8.26.0 ) May 13, 2025
@techtales-bot techtales-bot bot force-pushed the renovate/gitleaks-gitleaks-8.x branch 2 times, most recently from e156d28 to a824f25 Compare May 19, 2025 12:44
@techtales-bot techtales-bot bot force-pushed the renovate/gitleaks-gitleaks-8.x branch from a824f25 to 314dc69 Compare May 24, 2025 18:27
@techtales-bot techtales-bot bot force-pushed the renovate/gitleaks-gitleaks-8.x branch from 314dc69 to 5663ffb Compare June 1, 2025 18:27
@techtales-bot techtales-bot bot changed the title chore(pre-commit): update gitleaks/gitleaks ( v8.24.3 → v8.26.0 ) chore(pre-commit): update gitleaks/gitleaks ( v8.24.3 → v8.27.0 ) Jun 1, 2025
@techtales-bot techtales-bot bot force-pushed the renovate/gitleaks-gitleaks-8.x branch from 5663ffb to 40d193e Compare June 8, 2025 06:30
@techtales-bot techtales-bot bot changed the title chore(pre-commit): update gitleaks/gitleaks ( v8.24.3 → v8.27.0 ) chore(pre-commit): update gitleaks/gitleaks ( v8.24.3 → v8.27.1 ) Jun 8, 2025
@techtales-bot techtales-bot bot force-pushed the renovate/gitleaks-gitleaks-8.x branch from 40d193e to b346af8 Compare June 9, 2025 01:53
@techtales-bot techtales-bot bot changed the title chore(pre-commit): update gitleaks/gitleaks ( v8.24.3 → v8.27.1 ) chore(pre-commit): update gitleaks/gitleaks ( v8.24.3 → v8.27.2 ) Jun 9, 2025
@techtales-bot techtales-bot bot force-pushed the renovate/gitleaks-gitleaks-8.x branch from b346af8 to 2e04231 Compare June 12, 2025 01:47
@techtales-bot techtales-bot bot force-pushed the renovate/gitleaks-gitleaks-8.x branch from 2e04231 to 8255fb6 Compare July 20, 2025 18:30
@techtales-bot techtales-bot bot changed the title chore(pre-commit): update gitleaks/gitleaks ( v8.24.3 → v8.27.2 ) chore(pre-commit): update gitleaks/gitleaks ( v8.24.3 → v8.28.0 ) Jul 20, 2025
@techtales-bot techtales-bot bot force-pushed the renovate/gitleaks-gitleaks-8.x branch from 8255fb6 to 7584ce3 Compare August 4, 2025 18:35
@techtales-bot techtales-bot bot force-pushed the renovate/gitleaks-gitleaks-8.x branch from 7584ce3 to 5251c50 Compare August 20, 2025 01:43
@techtales-bot techtales-bot bot force-pushed the renovate/gitleaks-gitleaks-8.x branch from 5251c50 to eed2f93 Compare November 5, 2025 01:45
@techtales-bot techtales-bot bot changed the title chore(pre-commit): update gitleaks/gitleaks ( v8.24.3 → v8.28.0 ) chore(pre-commit): update gitleaks/gitleaks ( v8.24.3 → v8.29.0 ) Nov 5, 2025
@techtales-bot techtales-bot bot force-pushed the renovate/gitleaks-gitleaks-8.x branch from eed2f93 to 36b7a7a Compare November 20, 2025 01:43
@techtales-bot techtales-bot bot changed the title chore(pre-commit): update gitleaks/gitleaks ( v8.24.3 → v8.29.0 ) chore(pre-commit): update gitleaks/gitleaks ( v8.24.3 → v8.29.1 ) Nov 20, 2025
| datasource  | package           | from    | to      |
| ----------- | ----------------- | ------- | ------- |
| github-tags | gitleaks/gitleaks | v8.24.3 | v8.30.0 |
@techtales-bot techtales-bot bot force-pushed the renovate/gitleaks-gitleaks-8.x branch from 36b7a7a to 8ebcec0 Compare November 26, 2025 18:29
@techtales-bot techtales-bot bot changed the title chore(pre-commit): update gitleaks/gitleaks ( v8.24.3 → v8.29.1 ) chore(pre-commit): update gitleaks/gitleaks ( v8.24.3 → v8.30.0 ) Nov 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant