Repository navigation
Suppress CredScan false positive on Application Gateway mTLS test recording - #30202
Merged
DanielMicrosoft merged 1 commit intoSep 27, 2026
Conversation
…ording The security-tools stage on the release-network-2026-01-01 to main rollup (PR Azure#30195) fails because CredScan (CSCAN-GENERAL0020) fires on src\Network\Network.Test\SessionRecords\Commands.Network.Test.ScenarioTests.ApplicationGatewayTests\TestApplicationGatewayCRUDWithMutualAuthentication.json. This session recording was added by PR Azure#30158 (Add Application Gateway frontend mTLS passthrough configuration). It contains 264 PFX-formatted base64 blobs - the client and server test certificates recorded during the mutual TLS test scenario. All are ephemeral test-only certificates with no live credentials. Suppressing this file follows the same pattern already applied in tools/SecurityTools/CredScanSuppressions.json for sibling Network test artifacts (TestApplicationGatewayCRUD2.json line 89, ApplicationGatewaySslCert1.pfx line 41, ApplicationGatewaySslCert2.pfx line 45). Landing on release-network-2026-01-01 so the fix flows into main atomically with the rollup PR.
Contributor
|
Azure Pipelines: There may be pipelines that require an authorized user to comment /azp run to run. |
Member
|
/azp run |
Contributor
|
Azure Pipelines: Successfully started running 3 pipeline(s). |
Member
Author
|
DanielMicrosoft — kindly review. This is the tiny suppression PR needed to unblock the release-network-2026-01-01 → main rollup (#30195). Context:
Once merged, #30195 auto-picks it up and security-tools should go green on the next rerun. Thanks for the fast turnaround. |
3 tasks done
DanielMicrosoft
approved these changes
Sep 27, 2026
DanielMicrosoft
merged commit Sep 27, 2026
4982a38
into
Azure:release-network-2026-01-01
12 checks passed
4 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 PR Validation — ️✔️ All clear
Description
Adds a single CredScan suppression entry to unblock the release-rollup PR #30195 ("[Do Not Squash] Release network 2026 01 01"). Its
azure-powershell - security-toolsstage is the only remaining failing check on that PR; every other leg (Build, Analyze, Test windows/linux/macOS on bothpowershell-coreandwindows-powershell) is green.Root cause
src/Network/Network.Test/SessionRecords/Commands.Network.Test.ScenarioTests.ApplicationGatewayTests/TestApplicationGatewayCRUDWithMutualAuthentication.json(~2 MB).PfxContentrule (errorCSCAN-GENERAL0020) pattern-matches on those PFX blobs and treats each match as a finding. Guardian aggregates the findings and exits with code 8 ("one or more breaking results") whenever the delta against themainbaseline exceeds threshold.Why this only surfaces now
release-network-2026-01-01. Release-branch CI runs against a looser Guardian baseline, so the new PFX blobs were classified as a permitted delta on that branch.main, which has the strictest Guardian baseline in the repo. On the rollup, every new finding since the last known-cleanmainbaseline must be either intools/SecurityTools/CredScanSuppressions.jsonor an approved waiver. The new mTLS recording was never added to the suppression list.mergeStateStatus: DIRTY(main was 45 commits ahead), so a fresh, complete CI didn't run against the rollup head SHA. Once #30196 merged and the rollup's head SHA advanced to include the merge commit, Azure Pipelines kicked offBuild #20260925.6— the first true full run — and security-tools reported the finding.The fix
One entry appended to
tools/SecurityTools/CredScanSuppressions.json, in the same Network cluster as the existing sibling entries:{ "file": "src\\Network\\Network.Test\\SessionRecords\\Commands.Network.Test.ScenarioTests.ApplicationGatewayTests\\TestApplicationGatewayCRUDWithMutualAuthentication.json", "_justification": "Legitimate test session record for mutual TLS (mTLS) scenarios; contains PFX-formatted client and server test certificates recorded during the Application Gateway mTLS Passthrough test (added by PR #30158). All certificates are ephemeral test data; no live credentials." }This mirrors the existing suppressions at the same location for:
TestApplicationGatewayCRUD2.json(line 89) — same file family, same patternApplicationGatewaySslCert1.pfx/ApplicationGatewaySslCert2.pfx(lines 41, 45) — standalone PFX test certificatesWhy land on
release-network-2026-01-01(not directly onmain)Landing this on the release branch first is deliberate — the fix flows into
mainatomically with the rollup PR #30195, so the rollup's next security-tools run sees the suppression as part of the same aggregate change set that added the mTLS recording. Merging the suppression onmainin parallel would work, but it would leave a brief window wheremaindisagrees withrelease-network-2026-01-01about which files are suppressed, and it would require a second sync commit before #30195 can merge cleanly.Testing
Get-Content tools/SecurityTools/CredScanSuppressions.json -Raw | ConvertFrom-Json→ parses OK.git diff --stat→ 1 file changed, +4 lines / -0 lines. Nothing outside the suppression file is touched.Checklist
_justificationexplains what the file is, why the blobs look like credentials, and confirms they are test data (mirrors the tone of surrounding entries).tools/SecurityTools/CredScanSuppressions.json.