Skip to content
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

Update frogbot-scan-and-fix.yml #3

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open

Update frogbot-scan-and-fix.yml #3

wants to merge 5 commits into from

Conversation

sunilsinghc11
Copy link
Owner

No description provided.

def arc4_encrypt_password(key, password):
cipher = ARC4.new(key.encode('utf-8'))
encrypted_password = cipher.encrypt(password.encode('utf-8'))
return hashlib.md5(encrypted_password).hexdigest()

Check warning

Code scanning / JFrog Frogbot

Unsafe Hash Algorithm Medium test

Unsafe Hash Algorithm

def arc4_encrypt_password(key, password):
cipher = ARC4.new(key.encode('utf-8'))
encrypted_password = cipher.encrypt(password.encode('utf-8'))

Check failure

Code scanning / CodeQL

Use of a broken or weak cryptographic algorithm High test

The cryptographic algorithm ARC4
is broken or weak, and should not be used.
def arc4_encrypt_password(key, password):
cipher = ARC4.new(key.encode('utf-8'))
encrypted_password = cipher.encrypt(password.encode('utf-8'))
return hashlib.md5(encrypted_password).hexdigest()

Check warning

Code scanning / JFrog Frogbot

Unsafe Hash Algorithm Medium

Unsafe Hash Algorithm

def arc4_encrypt_password(key, password):
cipher = ARC4.new(key.encode('utf-8'))
encrypted_password = cipher.encrypt(password.encode('utf-8'))

Check failure

Code scanning / CodeQL

Use of a broken or weak cryptographic algorithm High

The cryptographic algorithm ARC4
is broken or weak, and should not be used.
Copy link

🚨 Frogbot scanned this pull request and found the below:


def arc4_encrypt_password(key, password):
cipher = ARC4.new(key.encode('utf-8'))
encrypted_password = cipher.encrypt(password.encode('utf-8'))
return hashlib.md5(encrypted_password).hexdigest()

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Static Application Security Testing (SAST) Vulnerability

Severity Finding

Medium
Unsafe Hash Algorithm
Full description

Overview

An unsafe hash algorithm vulnerability occurs when using a known insecure hash algorithm.
A hash algorithm accepts arbitrary input and generates a hash value - a fixed-length output
that can be used to verify the integrity of data, such as passwords or files.
An insecure hash algorithm in an algorithm that an attacker can use to generate
the same hash value for different input data within a reasonable amount of time
("hash collision attack").

Query operation

In this query we look for any usage of weak hash algorithms

Vulnerable example

from flask import Flask, request
import hashlib

app = Flask(__name__)

@app.route('/login', methods=['POST'])
def login():
    username = request.form.get('username')
    password = request.form.get('password')

    # Vulnerable hashing mechanism (MD5)
    hashed_password = hashlib.md5(password.encode()).hexdigest()

    if check_password(username, hashed_password):
        return 'Login successful'
    else:
        return 'Login failed'

if __name__ == '__main__':
    app.run()

In this example, the application uses the MD5 hashing algorithm
to hash the user's password before storage. MD5 is considered a weak hashing algorithm,
vulnerable to various attacks, including collision attacks and precomputed lookup tables
(hash inversion).

Remediation

Replace any usage of the md5 and sha1 hash algorithms with stronger hash algorithms such
as sha256 -

@app.route('/login', methods=['POST'])
def login():
    username = request.form.get('username')
    password = request.form.get('password')

-    hashed_password = hashlib.md5(password.encode()).hexdigest()
+    hashed_password = hashlib.sha256(password.encode()).hexdigest()

if check_password(username, hashed_password):
    return 'Login successful'
else:
    return 'Login failed'

def arc4_encrypt_password(key, password):
cipher = ARC4.new(key.encode('utf-8'))
encrypted_password = cipher.encrypt(password.encode('utf-8'))
return hashlib.md5(encrypted_password).hexdigest()

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Static Application Security Testing (SAST) Vulnerability

Severity Finding

Medium
Unsafe Hash Algorithm
Full description

Overview

An unsafe hash algorithm vulnerability occurs when using a known insecure hash algorithm.
A hash algorithm accepts arbitrary input and generates a hash value - a fixed-length output
that can be used to verify the integrity of data, such as passwords or files.
An insecure hash algorithm in an algorithm that an attacker can use to generate
the same hash value for different input data within a reasonable amount of time
("hash collision attack").

Query operation

In this query we look for any usage of weak hash algorithms

Vulnerable example

from flask import Flask, request
import hashlib

app = Flask(__name__)

@app.route('/login', methods=['POST'])
def login():
    username = request.form.get('username')
    password = request.form.get('password')

    # Vulnerable hashing mechanism (MD5)
    hashed_password = hashlib.md5(password.encode()).hexdigest()

    if check_password(username, hashed_password):
        return 'Login successful'
    else:
        return 'Login failed'

if __name__ == '__main__':
    app.run()

In this example, the application uses the MD5 hashing algorithm
to hash the user's password before storage. MD5 is considered a weak hashing algorithm,
vulnerable to various attacks, including collision attacks and precomputed lookup tables
(hash inversion).

Remediation

Replace any usage of the md5 and sha1 hash algorithms with stronger hash algorithms such
as sha256 -

@app.route('/login', methods=['POST'])
def login():
    username = request.form.get('username')
    password = request.form.get('password')

-    hashed_password = hashlib.md5(password.encode()).hexdigest()
+    hashed_password = hashlib.sha256(password.encode()).hexdigest()

if check_password(username, hashed_password):
    return 'Login successful'
else:
    return 'Login failed'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant