Reino: Security Features
Segurança de software não é o mesmo que software de segurança. Aqui, estamos interessados em tópicos como autenticação, controle de acesso, confidencialidade, criptografia e gestão de privilégios.
Privacy Violation: Unobfuscated Logging
Abstract
A utilização incorreta de informações privadas, como senhas ou números de segurança social de clientes, pode comprometer a privacidade dos usuários e em muitos casos é um procedimento ilegal.
Explanation
Violações de privacidade ocorrem quando:
1. Informações privadas de usuários entram no programa.
2. Os dados são gravados em um local externo, como o console, o sistema de arquivos ou a rede.
Exemplo 1: O código vulnerável a seguir contém uma instrução de configuração que permite que o segredo "admin_password" seja registrado em log sem ofuscação.
O código em
Dados privados podem entrar em um programa de várias maneiras:
- Diretamente do usuário, na forma de uma senha ou informações pessoais
- Acessados de um banco de dados ou outro repositório de dados pelo aplicativo
- Indiretamente de um parceiro ou de terceiros
Às vezes, dados não rotulados como privados podem ter uma implicação de privacidade em um contexto diferente. Por exemplo, números de identificação de aluno geralmente não são considerados privados, pois não há um mapeamento explícito e publicamente disponível para as informações pessoais de um aluno individual. No entanto, se uma escola gerar números de identificação com base em números de segurança social de alunos, esses números de identificação deverão ser considerados privados.
Preocupações de segurança e privacidade muitas vezes parecem competir umas com as outras. Sob o ponto de vista da segurança, você deve registrar todas as operações importantes para que qualquer atividade anormal possa ser identificada mais tarde. No entanto, quando dados privados estão envolvidos, essa prática pode gerar riscos.
Embora existam muitas maneiras de manipular dados privados sem segurança, um risco comum está relacionado a equívocos de confiança. Os programadores muitas vezes confiam no ambiente operacional em que um programa é executado e, portanto, julgam aceitável armazenar informações privadas no sistema de arquivos, no registro ou em outros recursos localmente controlados. No entanto, mesmo se o acesso a determinados recursos for restrito, isso não garante que os indivíduos que têm esse acesso possam ser confiáveis. Por exemplo, em 2004, um funcionário sem escrúpulos da AOL vendeu cerca de 92 milhões de endereços de email privados de clientes para um remetente de spam que comercializava um site de jogatina em atividade fora do país [1].
Em resposta a tais explorações notórias, a coleta e o gerenciamento de dados privados estão se tornando cada vez mais regulamentados. Dependendo da sua localização, do tipo de negócios administrado e da natureza de quaisquer dados privados que ela manipule, uma organização pode ser obrigada a cumprir uma ou mais das seguintes normas federais e estaduais:
- Safe Harbor Privacy Framework [3]
- GLBA (Gramm-Leach Bliley Act) [4]
- HIPAA (Health Insurance Portability and Accountability Act) [5]
- California SB-1386 [6]
Apesar dessas normas, violações de privacidade continuam a ocorrer com frequência alarmante.
1. Informações privadas de usuários entram no programa.
2. Os dados são gravados em um local externo, como o console, o sistema de arquivos ou a rede.
Exemplo 1: O código vulnerável a seguir contém uma instrução de configuração que permite que o segredo "admin_password" seja registrado em log sem ofuscação.
from oslo_config import cfg
...
opts = [
cfg.StrOpt('admin_password',secret=False,
help="User's password")]
...
grp = cfg.OptGroup('mygroup')
cfg.CONF.register_opts(opts, group=grp)
...
logger.warning("Adding %s" % cfg.CONF.mygroup.admin_password)
O código em
Example 1
grava admin_password
em texto simples (não ofuscado) na saída do log, pois o valor de secret
é definido como False
. Embora muitos desenvolvedores confiem no log de eventos como um local de armazenamento seguro para os dados, ele não deve ser confiado de forma implícita, especialmente quando a privacidade é uma preocupação.Dados privados podem entrar em um programa de várias maneiras:
- Diretamente do usuário, na forma de uma senha ou informações pessoais
- Acessados de um banco de dados ou outro repositório de dados pelo aplicativo
- Indiretamente de um parceiro ou de terceiros
Às vezes, dados não rotulados como privados podem ter uma implicação de privacidade em um contexto diferente. Por exemplo, números de identificação de aluno geralmente não são considerados privados, pois não há um mapeamento explícito e publicamente disponível para as informações pessoais de um aluno individual. No entanto, se uma escola gerar números de identificação com base em números de segurança social de alunos, esses números de identificação deverão ser considerados privados.
Preocupações de segurança e privacidade muitas vezes parecem competir umas com as outras. Sob o ponto de vista da segurança, você deve registrar todas as operações importantes para que qualquer atividade anormal possa ser identificada mais tarde. No entanto, quando dados privados estão envolvidos, essa prática pode gerar riscos.
Embora existam muitas maneiras de manipular dados privados sem segurança, um risco comum está relacionado a equívocos de confiança. Os programadores muitas vezes confiam no ambiente operacional em que um programa é executado e, portanto, julgam aceitável armazenar informações privadas no sistema de arquivos, no registro ou em outros recursos localmente controlados. No entanto, mesmo se o acesso a determinados recursos for restrito, isso não garante que os indivíduos que têm esse acesso possam ser confiáveis. Por exemplo, em 2004, um funcionário sem escrúpulos da AOL vendeu cerca de 92 milhões de endereços de email privados de clientes para um remetente de spam que comercializava um site de jogatina em atividade fora do país [1].
Em resposta a tais explorações notórias, a coleta e o gerenciamento de dados privados estão se tornando cada vez mais regulamentados. Dependendo da sua localização, do tipo de negócios administrado e da natureza de quaisquer dados privados que ela manipule, uma organização pode ser obrigada a cumprir uma ou mais das seguintes normas federais e estaduais:
- Safe Harbor Privacy Framework [3]
- GLBA (Gramm-Leach Bliley Act) [4]
- HIPAA (Health Insurance Portability and Accountability Act) [5]
- California SB-1386 [6]
Apesar dessas normas, violações de privacidade continuam a ocorrer com frequência alarmante.
References
[1] J. Oates AOL man pleads guilty to selling 92m email addies The Register
[2] Privacy Initiatives U.S. Federal Trade Commission
[3] Safe Harbor Privacy Framework U.S. Department of Commerce
[4] Financial Privacy: The Gramm-Leach Bliley Act (GLBA) Federal Trade Commission
[5] Health Insurance Portability and Accountability Act (HIPAA) U.S. Department of Human Services
[6] California SB-1386 Government of the State of California
[7] M. Howard, D. LeBlanc Writing Secure Code, Second Edition Microsoft Press
[8] Standards Mapping - Common Weakness Enumeration CWE ID 359
[9] Standards Mapping - Common Weakness Enumeration Top 25 2019 [4] CWE ID 200
[10] Standards Mapping - Common Weakness Enumeration Top 25 2020 [7] CWE ID 200
[11] Standards Mapping - Common Weakness Enumeration Top 25 2021 [20] CWE ID 200
[12] Standards Mapping - Common Weakness Enumeration Top 25 2024 [17] CWE ID 200
[13] Standards Mapping - DISA Control Correlation Identifier Version 2 CCI-000169, CCI-001199, CCI-001312, CCI-001314, CCI-002475
[14] Standards Mapping - FIPS200 MP
[15] Standards Mapping - General Data Protection Regulation (GDPR) Privacy Violation
[16] Standards Mapping - NIST Special Publication 800-53 Revision 4 AC-4 Information Flow Enforcement (P1), AU-12 Audit Generation (P1), SC-28 Protection of Information at Rest (P1), SI-11 Error Handling (P2)
[17] Standards Mapping - NIST Special Publication 800-53 Revision 5 AC-4 Information Flow Enforcement, AU-12 Audit Record Generation, SC-28 Protection of Information at Rest, SI-11 Error Handling
[18] Standards Mapping - OWASP API 2023 API3 Broken Object Property Level Authorization
[19] Standards Mapping - OWASP Application Security Verification Standard 4.0 8.2.2 Client-side Data Protection (L1 L2 L3), 8.3.4 Sensitive Private Data (L1 L2 L3), 10.2.1 Malicious Code Search (L2 L3)
[20] Standards Mapping - OWASP Mobile 2014 M1 Weak Server Side Controls
[21] Standards Mapping - OWASP Mobile 2024 M6 Inadequate Privacy Controls
[22] Standards Mapping - OWASP Top 10 2007 A6 Information Leakage and Improper Error Handling
[23] Standards Mapping - OWASP Top 10 2010 A7 Insecure Cryptographic Storage
[24] Standards Mapping - OWASP Top 10 2013 A6 Sensitive Data Exposure
[25] Standards Mapping - OWASP Top 10 2017 A3 Sensitive Data Exposure
[26] Standards Mapping - OWASP Top 10 2021 A02 Cryptographic Failures
[27] Standards Mapping - Payment Card Industry Data Security Standard Version 1.1 Requirement 4.1
[28] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 Requirement 3.4, Requirement 6.3.1.3, Requirement 6.5.6, Requirement 6.5.8, Requirement 8.4
[29] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 Requirement 3.2, Requirement 3.4, Requirement 6.5.5, Requirement 8.4
[30] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 3.2, Requirement 3.4, Requirement 4.2, Requirement 6.5.3, Requirement 8.2.1
[31] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 3.2, Requirement 3.4, Requirement 4.2, Requirement 6.5.3, Requirement 8.2.1
[32] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 3.2, Requirement 3.4, Requirement 4.2, Requirement 6.5.3, Requirement 8.2.1
[33] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 3.2, Requirement 3.4, Requirement 4.2, Requirement 6.5.3, Requirement 8.2.1
[34] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 3.3.1, Requirement 3.5.1, Requirement 4.2.2, Requirement 6.2.4, Requirement 8.3.1
[35] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 3.3.1, Requirement 3.3.2, Requirement 3.3.3, Requirement 3.5.1, Requirement 4.2.2, Requirement 6.2.4, Requirement 8.3.1
[36] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 3.3 - Sensitive Data Retention, Control Objective 6.1 - Sensitive Data Protection, Control Objective 7 - Use of Cryptography
[37] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 3.3 - Sensitive Data Retention, Control Objective 6.1 - Sensitive Data Protection, Control Objective 7 - Use of Cryptography
[38] Standards Mapping - Payment Card Industry Software Security Framework 1.2 Control Objective 3.3 - Sensitive Data Retention, Control Objective 6.1 - Sensitive Data Protection, Control Objective 7 - Use of Cryptography
[39] Standards Mapping - SANS Top 25 2010 Porous Defenses - CWE ID 311
[40] Standards Mapping - SANS Top 25 2011 Porous Defenses - CWE ID 311
[41] Standards Mapping - Security Technical Implementation Guide Version 3.1 APP3620 CAT II
[42] Standards Mapping - Security Technical Implementation Guide Version 3.4 APP3620 CAT II
[43] Standards Mapping - Security Technical Implementation Guide Version 3.5 APP3620 CAT II
[44] Standards Mapping - Security Technical Implementation Guide Version 3.6 APP3620 CAT II
[45] Standards Mapping - Security Technical Implementation Guide Version 3.7 APP3620 CAT II
[46] Standards Mapping - Security Technical Implementation Guide Version 3.9 APP3620 CAT II
[47] Standards Mapping - Security Technical Implementation Guide Version 3.10 APP3620 CAT II
[48] Standards Mapping - Security Technical Implementation Guide Version 4.2 APSC-DV-000650 CAT II, APSC-DV-002330 CAT II, APSC-DV-002340 CAT II, APSC-DV-002570 CAT II, APSC-DV-002580 CAT II
[49] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-000650 CAT II, APSC-DV-002330 CAT II, APSC-DV-002340 CAT II, APSC-DV-002570 CAT II, APSC-DV-002580 CAT II
[50] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-000650 CAT II, APSC-DV-002330 CAT II, APSC-DV-002340 CAT II, APSC-DV-002570 CAT II, APSC-DV-002580 CAT II
[51] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-000650 CAT II, APSC-DV-002330 CAT II, APSC-DV-002340 CAT II, APSC-DV-002570 CAT II, APSC-DV-002580 CAT II
[52] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-000650 CAT II, APSC-DV-002330 CAT II, APSC-DV-002340 CAT II, APSC-DV-002570 CAT II, APSC-DV-002580 CAT II
[53] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-000650 CAT II, APSC-DV-002330 CAT II, APSC-DV-002340 CAT II, APSC-DV-002570 CAT II, APSC-DV-002580 CAT II
[54] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-000650 CAT II, APSC-DV-002330 CAT II, APSC-DV-002340 CAT II, APSC-DV-002570 CAT II, APSC-DV-002580 CAT II
[55] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-000650 CAT II, APSC-DV-002330 CAT II, APSC-DV-002340 CAT II, APSC-DV-002570 CAT II, APSC-DV-002580 CAT II
[56] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-000650 CAT II, APSC-DV-002330 CAT II, APSC-DV-002340 CAT II, APSC-DV-002570 CAT II, APSC-DV-002580 CAT II
[57] Standards Mapping - Security Technical Implementation Guide Version 4.11 APSC-DV-000650 CAT II, APSC-DV-002330 CAT II, APSC-DV-002340 CAT II, APSC-DV-002570 CAT II, APSC-DV-002580 CAT II
[58] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-000650 CAT II, APSC-DV-002330 CAT II, APSC-DV-002340 CAT II, APSC-DV-002570 CAT II, APSC-DV-002580 CAT II
[59] Standards Mapping - Security Technical Implementation Guide Version 5.1 APSC-DV-000650 CAT II, APSC-DV-002330 CAT II, APSC-DV-002340 CAT II, APSC-DV-002570 CAT II, APSC-DV-002580 CAT II
[60] Standards Mapping - Security Technical Implementation Guide Version 5.2 APSC-DV-000650 CAT II, APSC-DV-002330 CAT II, APSC-DV-002340 CAT II, APSC-DV-002570 CAT II, APSC-DV-002580 CAT II
[61] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-000650 CAT II, APSC-DV-002330 CAT II, APSC-DV-002340 CAT II, APSC-DV-002570 CAT II, APSC-DV-002580 CAT II
[62] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-000650 CAT II, APSC-DV-002330 CAT II, APSC-DV-002340 CAT II, APSC-DV-002570 CAT II, APSC-DV-002580 CAT II
[63] Standards Mapping - Web Application Security Consortium Version 2.00 Information Leakage (WASC-13)
[64] Standards Mapping - Web Application Security Consortium 24 + 2 Information Leakage
desc.structural.python.privacy_violation_unobfuscated_logging