Hashing functions such as MD5 and encryption algorithms such as DES and RC2 can expose significant risk and may result in the exposure of sensitive information through trivial attack techniques, such as brute force attacks and hash collisions.
The cryptographic algorithms list below are subject to known cryptographic attacks. The cryptographic hash algorithm MD5 is subject to hash collision attacks. Depending on the usage, a hash collision may lead to impersonation, tampering, or other kinds of attacks on systems that rely on the unique cryptographic output of a hashing function. The encryption algorithms DES and RC2 are subject to cryptographic attacks that may result in unintended disclosure of encrypted data.
Rule description
Broken cryptographic algorithms are not considered secure and their use should be discouraged. The MD5 hash algorithm is susceptible to known collision attacks, though the specific vulnerability will vary based on the context of use. Hashing algorithms used to ensure data integrity (for example, file signature or digital certificate) are particularly vulnerable. In this context, attackers could generate two separate pieces of data, such that benign data can be substituted with malicious data, without changing the hash value or invalidating an associated digital signature.
For encryption algorithms:
DES encryption contains a small key size, which could be brute-forced in less than a day.
RC2 encryption is susceptible to a related-key attack, where the attacker finds mathematical relationships between all key values.
This rule triggers when it finds any of the above cryptographic functions in source code and throws a warning to the user.
The following pseudo-code samples illustrate the pattern detected by this rule and possible alternatives.
MD5 Hashing Violation
C#
using System.Security.Cryptography;
...
var hashAlg = MD5.Create();
Solution:
C#
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
RC2 Encryption Violation
C#
using System.Security.Cryptography;
...
RC2 encAlg = RC2.Create();
Solution:
C#
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}
DES Encryption Violation
C#
using System.Security.Cryptography;
...
DES encAlg = DES.Create();
Solution:
C#
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}
ითანამშრომლეთ ჩვენთან GitHub-ზე
ამ შიგთავსის წყაროს მოძიება GitHub-ზე არის შესაძლებელი, სადაც თქვენ ასევე შეგიძლიათ პრობლემების შექმნა და განხილვა და მოთხოვნების გადმოტანა. დამატებითი ინფორმაციისთვის იხილეთ ჩვენი დამხმარე სახელმძღვანელო.
.NET-(ი)ს უკუკავშირი
.NET არის ღია წყაროს პროექტი. აირჩიეთ ბმული უკუკავშირის გასაგზავნად:
შემოუერთდით Meetup სერიას, რათა შექმნათ მასშტაბური AI გადაწყვეტილებები რეალურ სამყაროში გამოყენების შემთხვევებზე დაყრდნობით თანამემამულე დეველოპერებთან და ექსპერტებთან.