Skip to main content
. 2022 Mar 17;27(3):59. doi: 10.1007/s10664-021-10109-y

Table 5.

Summary of open-ended responses on classifying true vs. false positives (A1.6)

Category* Description Example Count(%)
Dummy secret for testing (TR) Data used to drive security test cases. “It was a test input to verify end to end flow in test pass” 5 (33%)
Secret for test asset (DR) Actual secrets used to secure test assets. “It was an actual credential, but only for unit test purposes, so we will not remove it” 2 (13%)
Legacy secret (TR) Potential secret was already exposed, not newly introduced. “It was a possible credential pulled from a public open source GitHub repo into our private fork” 2 (13%)
False positive (TR) Detection was a false positive with insufficient detail to classify as placeholder, dummy, etc. “It was a variable name or string containing the word Password only” 2 (13%)
Secret placeholder (TR) Detection was a placeholder, i.e., a value that is expanded or transformed at run-time. “Not an actual credential, but I didn’t include the “placeholder” text to clarify that” 1 (7%)
Not a secret (TR) The detected code is not an actual, dummy or placeholder secret. “The GUID flagged looked like a secret but is not a secret” 1 (7%)
Developer error (DR) A potential secret was bypassed unintentionally. “I actually made a mistake. I had reset to the first change I had made, rather than the change before. I thought [XSDT] was failing to see that I had reset, so I had it bypass.” 1 (7%)
No better alternative (DR) The developer did not perceive a better solution for securing the secret. “It was an actual credential, and unfortunately the alternate ways to pass in the password to [...] apart from plaintext is no more safer than it” 1 (7%)

*For XTech’s internal use, the categories are interpreted as follows. Dummy secret for testing, False positives, Secret placeholder, and Not a secret are treated as A1.1, Secret for test asset as A1.2, Developer error, No better alternative as A1.3, Legacy secret as A1.5