-
Notifications
You must be signed in to change notification settings - Fork 869
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FIX: [CodeQL: SM02196] Weak cryptography in TrackingConfigHashAlgorithm.cs #5065
base: master
Are you sure you want to change the base?
Conversation
@microsoft-github-policy-service agree company="Microsoft" |
} | ||
else | ||
{ | ||
using (SHA1 SHA1 = SHA1.Create()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just realized if we have this code still here, the CODE QL warning will still be present. will need to take exception for this to resolve the CODQL warning.
new PipelineFeatureSource("UseSha256InComputeHash"), | ||
new RuntimeKnobSource("AGENT_USE_SHA256_IN_COMPUTE_HASH"), | ||
new EnvironmentKnobSource("AGENT_USE_SHA256_IN_COMPUTE_HASH"), | ||
new BuiltInDefaultKnobSource("true")); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it safe to have it true
by default?
hexString.Append(data[i].ToString("x2")); | ||
} | ||
byte[] data = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(hashInput)); | ||
StringBuilder hexString = new StringBuilder(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nitpick: var
using (SHA1 SHA1 = SHA1.Create()) | ||
{ | ||
byte[] data = SHA1.ComputeHash(Encoding.UTF8.GetBytes(hashInput)); | ||
StringBuilder hexString = new StringBuilder(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nitpick: var
hexString.Append(data[i].ToString("x2")); | ||
} | ||
byte[] data = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(hashInput)); | ||
StringBuilder hexString = new StringBuilder(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This part is identical to the same in else
The only difference I see is how data
is filled based on hash function used
Context
In TrackingConfigHashAlgorithm.cs, SHA1 was being used to compute the hashKey, which is used to identify the tracking config file in the agent system and hence the workspace identifier.
Change Description
The PR addresses the CodeQL warning of using a weak hash algortihm by replacing it with SHA256 based on the recommendations - SM02196
Also it updates the existing Unit Tests with the updated hash values from the new algorithm.
The PR also introduces a new dynamic Feature Flag (UseSha256InComputeHash) in case we want to rollback.
Validations