Como desenvolvedor, é fundamental garantir a segurança do nosso código. Para isso, integramos duas ferramentas muito importantes: o Bandit e o Safety Check. Eles são como guardiões, ajudando a identificar possíveis problemas de segurança e manter nossas aplicações mais seguras.
O Bandit é como um detetive que analisa nosso código Python em busca de problemas de segurança. Ele olha atentamente para o código, procurando por práticas inseguras e possíveis vulnerabilidades. Com o Bandit, podemos descobrir erros de segurança como injeção de código ou uso inadequado de segredos. Sua presença no nosso processo de desenvolvimento nos ajuda a corrigir esses problemas desde o início.
As linhas que começam com Issue são alertas ou problemas detectados pela ferramenta Bandit. Neste caso, há vários alertas do tipo B105:hardcoded_password_string, que indica a presença de senhas codificadas diretamente no código, o que é uma prática de segurança ruim. Além disso, há alertas do tipo B101:assert_used, que adverte sobre o uso de afirmações assert. Esses alertas sugerem que o código possui declarações assert, que são tipicamente usadas para verificar condições e podem ser removidas quando o código é compilado para otimização.
O Safety Check atua como um guardião das dependências do nosso projeto. Ele verifica se as bibliotecas que usamos têm vulnerabilidades conhecidas. Isso é importante, já que versões desatualizadas podem representar riscos de segurança. O Safety Check nos ajuda a evitar problemas, garantindo que as dependências que utilizamos não tragam riscos inesperados.
Unindo o Bandit e o Safety Check, garantimos uma segurança extra ao nosso projeto. Eles nos ajudam não apenas a identificar possíveis problemas, mas também a adotar práticas de programação mais seguras desde o começo do desenvolvimento. Essas ferramentas são nossas aliadas, fortalecendo a segurança do nosso código e nos ajudando a construir aplicações mais confiáveis.
Ter essas verificações de segurança é como ter um escudo extra, protegendo nosso código e garantindo que nossas aplicações sejam mais robustas e seguras. É um passo importante para criar um ambiente de desenvolvimento mais seguro e confiável.
+=======================================================================================================================================================================+
/$$$$$$ /$$
/$$__ $$ | $$
/$$$$$$$ /$$$$$$ | $$ \__//$$$$$$ /$$$$$$ /$$ /$$
/$$_____/ |____ $$| $$$$ /$$__ $$|_ $$_/ | $$ | $$
| $$$$$$ /$$$$$$$| $$_/ | $$$$$$$$ | $$ | $$ | $$
\____ $$ /$$__ $$| $$ | $$_____/ | $$ /$$| $$ | $$
/$$$$$$$/| $$$$$$$| $$ | $$$$$$$ | $$$$/| $$$$$$$
|_______/ \_______/|__/ \_______/ \___/ \____ $$
/$$ | $$
| $$$$$$/
by pyup.io \______/
+=======================================================================================================================================================================+
REPORT
Safety is using PyUp's free open-source vulnerability database. This data is 30 days old and limited.
For real-time enhanced vulnerability data, fix recommendations, severity reporting, cybersecurity support, team and project policy management and more sign up at
https://pyup.io or email sales@pyup.io
Safety v2.3.5 is scanning for Vulnerabilities...
Scanning dependencies in your environment:
-> /LACREI/syssegurit/lib/python3.12/site-packages
Using non-commercial database
Found and scanned 67 packages
Timestamp 2023-11-02 18:03:56
7 vulnerabilities found
0 vulnerabilities ignored
+=======================================================================================================================================================================+
VULNERABILITIES FOUND
+=======================================================================================================================================================================+
-> Vulnerability found in flask version 1.1.4
Vulnerability ID: 55261
Affected spec: <2.2.5
ADVISORY: Flask 2.2.5 and 2.3.2 include a fix for CVE-2023-30861: When all of the following conditions are met, a response containing data intended for one
client may be cached and subsequently sent by the proxy to other clients. If the proxy also caches 'Set-Cookie' headers, it may send one client's 'session' cookie...
CVE-2023-30861
For more information, please visit https://pyup.io/v/55261/f17
-> Vulnerability found in sqlalchemy version 1.4.50
Vulnerability ID: 51668
Affected spec: <2.0.0b1
ADVISORY: Sqlalchemy 2.0.0b1 avoids leaking cleartext passwords to the open for careless uses of str(engine.URL()) in logs and
prints.https://github.com/sqlalchemy/sqlalchemy/pull/8563
PVE-2022-51668
For more information, please visit https://pyup.io/v/51668/f17
-> Vulnerability found in sqlalchemy-utils version 0.34.2
Vulnerability ID: 42194
Affected spec: >=0.27.0
ADVISORY: Sqlalchemy-utils from version 0.27.0 'EncryptedType' uses by default AES with CBC mode. The IV that it uses is not random
though.https://github.com/kvesteri/sqlalchemy-utils/issues/166https://github.com/kvesteri/sqlalchemy-utils/pull/499
PVE-2021-42194
For more information, please visit https://pyup.io/v/42194/f17
-> Vulnerability found in werkzeug version 0.15.6
Vulnerability ID: 53325
Affected spec: <2.2.3
ADVISORY: Werkzeug 2.2.3 includes a fix for CVE-2023-25577: Prior to version 2.2.3, Werkzeug's multipart form data parser will parse an unlimited number of
parts, including file parts. Parts can be a small amount of bytes, but each requires CPU time to parse and may use more memory as Python data. If a request can be...
CVE-2023-25577
For more information, please visit https://pyup.io/v/53325/f17
-> Vulnerability found in werkzeug version 0.15.6
Vulnerability ID: 53326
Affected spec: <2.2.3
ADVISORY: Werkzeug 2.2.3 includes a fix for CVE-2023-23934: Browsers may allow "nameless" cookies that look like '=value' instead of 'key=value'. A vulnerable
browser may allow a compromised application on an adjacent subdomain to exploit this to set a cookie like '=__Host-test=bad' for another subdomain. Werkzeug prior...
CVE-2023-23934
For more information, please visit https://pyup.io/v/53326/f17
-> Vulnerability found in apispec version 0.38.0
Vulnerability ID: 42246
Affected spec: <1.0.0b2
ADVISORY: In PyYAML before 5.1, the yaml.load() API could execute arbitrary code if used with untrusted data. The load() function has been deprecated in
version 5.1 and the 'UnsafeLoader' has been introduced for backward compatibility with the function.
CVE-2017-18342
For more information, please visit https://pyup.io/v/42246/f17
-> Vulnerability found in webargs version 1.10.0
Vulnerability ID: 36963
Affected spec: <5.1.3
ADVISORY: webargs 5.1.3 fixes race condition between parallel requests when the cache is used. See: CVE-2019-9710.
CVE-2019-9710
For more information, please visit https://pyup.io/v/36963/f17
Scan was completed. 7 vulnerabilities were found.
+=======================================================================================================================================================================+
Agora, os passos de upload dos artefatos estão dentro do bloco security_scan e devem ser executados após a execução do Bandit e do Safety Check. Esses artefatos estarão disponíveis para download após a conclusão bem-sucedida do workflow. Para visualizar os resultados e entender melhor quais foram as questões de segurança identificadas, você pode abrir o arquivo bandit_results.txt (gerado pelo comando bandit -r . > bandit_results.txt) para examinar as descobertas específicas feitas pelo Bandit.
O conteúdo do arquivo bandit_results.txt conterá detalhes sobre os problemas encontrados, como possíveis vulnerabilidades, práticas inseguras ou falhas conhecidas no código Python analisado. Abra esse arquivo para obter mais informações sobre as questões específicas identificadas pelo Bandit e trabalhe para corrigir esses problemas de segurança no código.
name: Security Checks
on: [push]
jobs:
security_scan:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: 3.12
- name: Install dependencies
run: |
pip install bandit safety
- name: Run Bandit
run: bandit -r . --format txt -o bandit_results.txt || true # Este comando pode ignorar os erros e continuar a execução
- name: Run Safety Check
run: safety check --json > safety_results.json # Executa o Safety Check e armazena os resultados em um arquivo JSON
- name: Upload Bandit results
if: always() # Isso garante que os resultados sejam carregados mesmo se houver erros no Bandit
uses: actions/upload-artifact@v2
with:
name: bandit-results
path: bandit_results.txt
- name: Upload Safety results
uses: actions/upload-artifact@v2
with:
name: safety-results
path: safety_results.json
Acho que com isso provo minha utilidade para o projeto. Espero que gostem...