11 KiB
11 KiB
Release Notes
Definitions
- RUL => New detection.
- DEP => Update dependency.
- BRK => General breaking change.
- BUG => General bug fix.
- NEW => New API or feature.
- PRF => Performance work.
- FPS => False positive reduction in static analysis.
- FNS => False negative reduction in static analysis.
UNRELEASED
1.8.0 - 09/16/2024
- BUG: Mark
SEC000/000.Unclassified32ByteBase64String
,SEC000/001.Unclassified64ByteBase64String
,SEC101/101.AadClientAppLegacyCredentials
,SEC000/001.Unclassified64ByteBase64String
asDetectionMetadata.LowConfidence
. - BUG: Mark
SEC101/109.AzureContainerRegistryLegacyKey
asDetectionMetadata.MediumConfidence
. - BUG: Mark
SEC101/030.NuGetApiKey
,SEC101/105.AzureMessageLegacyCredentials
,SEC101/110.AzureDatabricksPat
,SEC101/050.NpmAuthorKey
,SEC101/565.SecretScanningSampleToken
asDetectionMetadata.HighConfidence
. - BUG: Make round-tripping of common annotated security keys through base64 encoding/decoding more robust. We previously emitted illegal ending base64 characters (when appending base62 encoded checksums).
- BUG: Correct
IdentifiableSecrets
ComputeDerivedCommonAnnotatedKey
andComputeCommonAnnotatedHash
helpers to preserve all randomized byte input entropy by encoding and decoding this data as base64. - NEW: Add
CommonAnnotatedKey
ChecksumBytes
andChecksumBytesIndex
convenience methods for retrieving key checksum data. - PRF: Enable scan pre-filtering by declaring
.servicebus
asSEC101/105.AzureMessageLegacyCredentials
signature.
1.7.0 - 09/10/2024
- BRK: Rename
StandardCommonAnnotatedKeySize
toStandardEncodedCommonAnnotatedKeySize
andLongFormCommonAnnotatedKeySize
toLongFormEncodedCommonAnnotatedKeySize
to distinguish these from const values for key lengths in bytes. - BUG: Correct
CommonAnnotatedKeyRegexPattern
to detect keys (as denoted byH
in the platform signature) derived from hashing data with CASK keys or arbitrary secrets. - BUG: Fix issue in low-level
GenerateCommonAnnotatedTestKey
helper in which key kind signature was hard-coded forD
(derived) for both derived and hashed keys (which should be denoted byH
). - NEW: Add
ComputeCommonAnnotatedHash
to generate annotated fingerprints from arbitrary strings. - NEW: Add
CommonAnnotatedDerivedKeySignature
andCommonAnnotatedHashedDataSignature
to denote these generated key variations. - NEW: Update key generation to use Base62 for all encoded checksums (including primary keys). As a result, all test keys (in which the randomized component is a common character) will be valid (because we no longer will generate special characters in the computed checksum).
- NEW: Add
longForm
argument toComputeDerivedCommonAnnotatedKey
andComputeCommonAnnotatedHash
to support backwards-compatible, full 64-byte encoded forms of these keys. - NEW: Provide
ComputeDerivedCommonAnnotatedKey
andComputeCommonAnnotatedHash
overloads that accept an arbitrary secret (and which allow platform and provider data to be explicitly specified).
1.6.0 - 08/09/2024
- NEW: Provide
StandardCommonAnnotatedKeySizeInBytes
andLongFormCommonAnnotatedKeySizeInBytes
constants (63 and 64, respectively). - NEW:
TryValidateCommonAnnotatedKey(byte[], string)
to facilitate working with keys as byte arrays. - NEW:
ComputeDerivedCommonAnnotatedKey(string, byte[])
to facilitate working with keys as byte arrays. - NEW:
GenerateCommonAnnotatedKeyBytes(bool, byte[], byte[], bool, char?)
to facilitate working with keys as byte arrays. - NEW: Change
ComputeDerivedCommonAnnotatedKey(string, string)
textToHash
parameter name toderivationInput
to better reflect its purpose. - NEW: Add preliminary notion of confidence levels.
- BUG: Move
AadClientAppLegacyCredentials34
out ofHighConfidenceMicrosoftSecurityModels
as a noisy check.
1.5.2 - 07/05/2024
- NEW: Added an initial secret redaction capability to the Rust package.
1.5.1 - 06/27/2024
- DEP: Rust packages now depend on
msvc_spectre_libs
to link Spectre-mitigated libraries formsvc
targets. - NEW: Rust packages now support common annotated security key generation and validation, with semantics equivalent to C# version.
1.5.0 - 06/18/2024
- RUL: Add
SEC101/061.LooseOAuth2BearerToken
detection. - DEP: Added support for net451 in
Microsoft.Security.Utilities.Core
for backward compatibility. - BRK: Remove
SEC101/109.AzureContainerRegistryLegacyKey
as it is too anonymous for standalone secret detection. - BUG: Resolve
System.ArgumentOutOfRangeException: Index was out of range
andSystem.FormatException: The input is not a valid Base-46 string
errors when callingIdentifiableSecrets.GenerateCommonAnnotatedTestKey(ulong, string, bool, byte[], byte[], bool, char?)
. These exceptions originated in multithreading issues inBase62.EncodingExtensions.ToBase62(this string)
. - BUG: Fix the logic in
CommonAnnotatedSecurityKey.GenerateTruePositiveExamples()
to handle invalid test key characters, and to properly break out of the testing loop. - FNS: Added
SEC101/200.CommonAnnotatedSecurityKey
toWellKnownPatterns.HighConfidenceMicrosoftSecurityModels
. - NEW: Add
DetectionMetadata.LowConfidence
andDetection.MediumConfidence
designations. - PRF: Eliminate instantiation of
RandomNumberGenerator
object on every key allocation. - FNS: Add
UrlCredentials
toWellKnownPatterns.UnclassifiedPotentialSecurityKeys
. - FNS: Add
Unclassified32CharacterString
toWellKnownPatterns.UnclassifiedPotentialSecurityKeys
. This rule locates some legacy AAD app passwords as well as legacy Azure container registry keys.
1.4.25 - 06/04/2024
- BUG: Bring
IdentifiableScan
into precise equivalence with other maskers, e.g.,Detection.RedactionToken
is now in alignment. - NEW: Provide hybrid capability to run high-performance detections in
IdentifiableScan
and fall back to other masker as required.
1.4.24 - 06/03/2024
- RUL: Add
SEC101/060.LooseSasSecret
detection. - RUL: Add
SEC101/528.GenericJwt
detection. - BRK: Rename
WellknownPatterns.HighConfidenceSecurityModels
toWellknownPatterns.PreciselyClassifiedSecurityKeys
. - BRK: Rename
WellknownPatterns.LowConfidencePotentialSecurityKeys
toWellknownPatterns.UnclassifiedPotentialSecurityKeys
. - BRK: Rename
RegexPattern.GenerateTestExamples
toRegexPattern.GenerateTruePositiveExamples
(and add matching method for false positive examples). - BRK: Add
longForm
argument toIdentifiableSecrets.GenerateCommonAnnotatedKey
, to produce the optional full 64-byte form (which includes the full 4-byte Marvin checksum). - BRK: Coalesce
AadClientAppIdentifiableCredentialsCurrent
andAadClientAppIdentifiableCredentialsPrevious
into a singleAadClientAppIdentifiableCredentials
check. - BRK: Rename
IIdentifiableKey.SniffLiterals
toIIdentifiableKey.Signatures
to precisely reflect their purpose to signify fixed signatures in keys. - BUG: Make
microsoft_security_utilities_core
Rust module public. The module cannot be consumed otherwise. - BUG: Update
IdentifiableScan
to post-process finds (e.g., with checksum validation) to eliminate false positives. - BUG: Correct
AzureCosmosDBIdentifiableKey
rule id toSEC101/160
(previously incorrectly listed asSEC101/163
). - BUG: Correct length of
SEC101/166.AzureSearchIdentifiableQueryKey
andSEC101/167.AzureSearchIdentifiableAdminKey
rules to 39 bytes and properly mark it asDetectionMetadata.Identifiable
. - BUG: Remove
/AM7
signature + check from rust code. - NEW: Add
SEC101/190.AzureEventGridIdentifiableKey
check. - NEW: Create distinct
Detection.CrossCompanyCorrelatingId
property. - BUG: Harden
IdentifiableSecrets.TryValidateCommonAnnotatedKey
for a variety of invalid inputs. - BUG: Correct
SEC101/170.AzureMLWebServiceClassicIdentifiableKey
signature to+AMC
. - FPS: Correct
SEC101/166.AzureSearchIdentifiableQueryKey
andSEC101/167.AzureSearchIdentifiableAdminKey
regex to disallow special characters in checksum region.
1.4.22 - 05/21/2024
- BUG: Fix
IdentifiableSecrets.ComputeDerivedSymmetricKey
andIdentifiableSecrets.ComputeDerivedIdentifiableKey
to properly initialize theHMACSHA256
algorithm with the cask/identifiable secret.
1.4.21 - 05/21/2024
- BRK: Rename
IdentifiableSecrets.ComputeDerivedSymmetricKey
toComputeDerivedIdentifiableKey
. - BRK: Update
IdentifiableSecrets.ComputeDerivedIdentifiableKey
to accept an alternate checksum seed for constructing the derived key. - NEW: Add
CommonAnnotatedSecret
key class for next-generation identifiable secrets. - NEW: Add
Identifiable.ComputeDerivedCommonAnnotatedKey
to generate keys derived from common annotated secrets.
1.4.20 - 05/16/2024
- BRK: Add
ComputeHash32(byte[], ulong, int, int)
helper to bring .NET framework and .NET core APIs into alignment. - BRK: Return value of
ISecretMaskerDetectSecrets(string)
isIEnumerable<Detection>
(notICollection
) for best yield iterator compatibility. - BUG: Honor
url-safe
option in keyGenerateCommand
to produce URL-safe base64-encoded patterns. - NEW: Update
SEC101_158_AzureFunctionIdentifiableKey1
,SEC101_176_AzureContainerRegistryIdentifiableKey
, andSEC101_190_AzureEventGridIdentifiableKey
to derive fromIdentifiableKey
base. - NEW: Implement preliminary high-performance
IdentifiableScan
engine that consume Rust library for detections.
1.4.19 - 05/10/2024
- BRK: Eliminate
Identifiable.TryValidateCommonAnnotatedKey
checksum
andcustomerManagedKey
parameters. Checksums now not configurable for HIS v2. - BRK: Eliminate
Identifiable.GenerateCommonAnnotated[Test]Key
checksum
parameter. - NEW: Add
IIdentifiableKey.EncodeForUrl
property for keys with URL-safe encodings. Also addsIdentifiableKey
base class for shared 32-bit and 64-bit logic. - NEW: Update
GenerateTestExamples
for standard keys to produce keys that are obviously test patterns due to character repetition, e.g.,cccccccccccccccccccccccccccccccccTESTCi1lAI=
. - FNS: Correct length for
SEC101/166.AzureSearchIdentifiableQueryKey
andSEC101/167.AzureSearchIdentifiableAdminKey
.
1.4.18 - 05/10/2024
- NEW: Add
IdentifiableSecrets.ComputeHisV1ChecksumSeed
to derive checksum seeds from versioned string literals, e.g.,ReadKey0
.
1.4.17 - 05/05/2024
- PRF: Remove
SHA256
instance creation fromRegexPattern.GenerateCrossCompanyCorrelatingId
to avoid expensive object initialization costs. - PRF: Add
RegexOption.NonBacktracking
as a default option when available to improve .NET regex engine performance. - PRF: Add some preliminary benchmarks to solution.
1.4.16 - 04/30/2024
- BRK: Update common annotated security key format with new requirements. The format is still not fixed.
- NEW: Make
SecurityMasker.AddPatterns
public.
1.4.15 - 04/16/2024
- NEW: Implement
IdentifiableSecrets.ComputeDerivedSymmetricKey
to generate identifiable derived keys from arbitrary identifiable secrets.