Skip to content

Feat/exclude values#1663

Open
chaimleib wants to merge 18 commits intosecurego:masterfrom
chaimleib:feat/exclude-values
Open

Feat/exclude values#1663
chaimleib wants to merge 18 commits intosecurego:masterfrom
chaimleib:feat/exclude-values

Conversation

@chaimleib
Copy link
Copy Markdown

@chaimleib chaimleib commented May 1, 2026

Adds .G101.keys and .G101.values fields to the PathExcludeRule type. If provided with a slice of regex patterns, G101 "Possible hardcoded credentials" issues will also be excluded if the hardcoded-value matches any of the values patterns, or if its key matches any of the keys patterns.

For example, the following code, common in test files, used to trigger an error:

const token = "fakeToken"

With this PR, a config can be set to exclude that issue when encountered in test files, based on the hardcoded value matching a pattern:

{
  "exclude-rules": [{
    "path": ".+_test\\.go$",
    "G101": {
      "values": [
        "(?i)^test",
        "(?i)^fake"
      ]
    }
  }]
}

Variable names can be excluded as well, even if the value looks like a credential:

testPassword := "|0oK5-l1k3_a=Pa5sw0Rd"
{
  "exclude-rules": [{
    "path": ".+_test\\.go$",
    "G101": {
      "keys": ["(?i)^test"]
    }
  }]
}

@chaimleib chaimleib temporarily deployed to security-review May 1, 2026 00:13 — with GitHub Actions Inactive
@chaimleib chaimleib force-pushed the feat/exclude-values branch from 656e5c1 to 621cadb Compare May 1, 2026 00:29
@chaimleib chaimleib temporarily deployed to security-review May 1, 2026 00:29 — with GitHub Actions Inactive
@chaimleib chaimleib temporarily deployed to security-review May 1, 2026 22:45 — with GitHub Actions Inactive
@chaimleib chaimleib temporarily deployed to security-review May 1, 2026 22:46 — with GitHub Actions Inactive
@chaimleib chaimleib force-pushed the feat/exclude-values branch from efef057 to 39c5837 Compare May 1, 2026 22:59
@chaimleib chaimleib temporarily deployed to security-review May 1, 2026 22:59 — with GitHub Actions Inactive
@chaimleib chaimleib temporarily deployed to security-review May 1, 2026 23:17 — with GitHub Actions Inactive
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Barry Security Review

Comment thread exclusion_filter.go Outdated
@chaimleib chaimleib temporarily deployed to security-review May 1, 2026 23:25 — with GitHub Actions Inactive
@chaimleib chaimleib force-pushed the feat/exclude-values branch from e8ccb74 to bc9372b Compare May 1, 2026 23:26
@chaimleib chaimleib temporarily deployed to security-review May 1, 2026 23:26 — with GitHub Actions Inactive
@chaimleib chaimleib temporarily deployed to security-review May 2, 2026 00:11 — with GitHub Actions Inactive
@chaimleib chaimleib force-pushed the feat/exclude-values branch from 7927a9b to c8a4d2d Compare May 2, 2026 01:09
@chaimleib chaimleib temporarily deployed to security-review May 2, 2026 01:09 — with GitHub Actions Inactive
@ccojocar
Copy link
Copy Markdown
Member

ccojocar commented May 4, 2026

Thanks for this contribution. This seems AI generated.

Why was required to rename the methods/functions? Can you reduce the size of the changes only to the hardcode credentials?

@chaimleib
Copy link
Copy Markdown
Author

chaimleib commented May 4, 2026

Thanks for this contribution. This seems AI generated.

Why was required to rename the methods/functions? Can you reduce the size of the changes only to the hardcode credentials?

This was not AI generated. I did not even use AI for autocomplete.

I renamed some symbols because they mentioned "Path Exclusion", but I was adding functionality not related to paths. To avoid the misleading implication that PathExclusion symbols dealt only with paths, I removed "Path" from the names.

This is still WIP, and I'm looking into whether I should push the config deeper to be more tightly coupled to G101. I also want to write tests.

EDIT 2026-05-07: Since I really want to restrict the exclusions to particular paths, path_filters.go is the most natural place to trigger the key-value excluder. But I separated the logic out to its own files as much as I could.

@ccojocar
Copy link
Copy Markdown
Member

ccojocar commented May 4, 2026

Please do first the minimum change required to incorporate the functionality you mentioned without refactoring. You can follow up with refactoring if it is needed afterwards. This will make reviewing the change much easier. Thanks

@codecov
Copy link
Copy Markdown

codecov Bot commented May 6, 2026

Codecov Report

❌ Patch coverage is 69.95885% with 73 lines in your changes missing coverage. Please review.
✅ Project coverage is 80.25%. Comparing base (5f4eec9) to head (c8a4d2d).
⚠️ Report is 3 commits behind head on master.

Files with missing lines Patch % Lines
exclusion_filter.go 63.44% 49 Missing and 4 partials ⚠️
rules/hardcoded_credentials.go 83.72% 13 Missing and 1 partial ⚠️
cmd/gosec/main.go 25.00% 6 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1663      +/-   ##
==========================================
- Coverage   80.57%   80.25%   -0.32%     
==========================================
  Files         109      109              
  Lines       10181    10260      +79     
==========================================
+ Hits         8203     8234      +31     
- Misses       1495     1541      +46     
- Partials      483      485       +2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Copy Markdown
Member

@ccojocar ccojocar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please add some info in the README regarding the usage of this exclusion filter?

Is this introducing any breaking changes for the existing filter format?

Comment thread exclusion_filter.go Outdated
Comment thread exclusion_filter.go Outdated
Comment thread exclusion_filter.go
@chaimleib chaimleib force-pushed the feat/exclude-values branch from c8a4d2d to 8f6972a Compare May 7, 2026 04:44
@chaimleib chaimleib temporarily deployed to security-review May 7, 2026 04:45 — with GitHub Actions Inactive
@chaimleib chaimleib temporarily deployed to security-review May 7, 2026 04:58 — with GitHub Actions Inactive
@chaimleib chaimleib temporarily deployed to security-review May 7, 2026 05:03 — with GitHub Actions Inactive
Copy link
Copy Markdown
Member

@ccojocar ccojocar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also make sure to update the https://github.com/securego/gosec/blob/master/RULES.md#g101 with the added functionality when is implemented.

Comment thread rules/hardcoded_credentials.go
Comment thread rules/hardcoded_credentials.go
Comment thread path_filter.go Outdated
@chaimleib chaimleib temporarily deployed to security-review May 8, 2026 04:58 — with GitHub Actions Inactive
@chaimleib chaimleib temporarily deployed to security-review May 8, 2026 05:06 — with GitHub Actions Inactive
@chaimleib chaimleib temporarily deployed to security-review May 8, 2026 05:15 — with GitHub Actions Inactive
@chaimleib chaimleib force-pushed the feat/exclude-values branch from 99239e0 to 2cc4ef0 Compare May 8, 2026 05:19
@chaimleib chaimleib temporarily deployed to security-review May 8, 2026 05:19 — with GitHub Actions Inactive
@chaimleib chaimleib force-pushed the feat/exclude-values branch from 2cc4ef0 to 9d7c266 Compare May 8, 2026 05:30
@chaimleib chaimleib temporarily deployed to security-review May 8, 2026 05:30 — with GitHub Actions Inactive
@chaimleib chaimleib force-pushed the feat/exclude-values branch from 9d7c266 to a722960 Compare May 8, 2026 05:35
@chaimleib chaimleib temporarily deployed to security-review May 8, 2026 05:35 — with GitHub Actions Inactive
@chaimleib chaimleib temporarily deployed to security-review May 8, 2026 05:54 — with GitHub Actions Inactive
@chaimleib chaimleib temporarily deployed to security-review May 8, 2026 06:30 — with GitHub Actions Inactive
@chaimleib
Copy link
Copy Markdown
Author

Can you please add some info in the README regarding the usage of this exclusion filter?

Is this introducing any breaking changes for the existing filter format?

Done.

There should be no breaking changes for the existing filter format. The new feature is only configurable via JSON right now, via a new field in the path filter config. I weighed allowing configs via CLI arguments, but that seemed too complicated at this stage.

@chaimleib
Copy link
Copy Markdown
Author

Also make sure to update the https://github.com/securego/gosec/blob/master/RULES.md#g101 with the added functionality when is implemented.

Done!

@chaimleib chaimleib changed the title WIP: Feat/exclude values Feat/exclude values May 8, 2026
@chaimleib chaimleib marked this pull request as ready for review May 8, 2026 06:37
@chaimleib chaimleib deployed to security-review May 8, 2026 06:59 — with GitHub Actions Active
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants