diff options
| author | J08nY | 2021-12-16 16:02:06 +0100 |
|---|---|---|
| committer | J08nY | 2021-12-16 16:35:21 +0100 |
| commit | a6c02e2b48a8253c8be2dcdf82147dfa33ae8f7a (patch) | |
| tree | 8ffc00afe38df79558067bac146d154f0cf58e01 | |
| parent | 43e121942e328a66c8a6957651f4b81dacf8d43e (diff) | |
| download | sec-certs-a6c02e2b48a8253c8be2dcdf82147dfa33ae8f7a.tar.gz sec-certs-a6c02e2b48a8253c8be2dcdf82147dfa33ae8f7a.tar.zst sec-certs-a6c02e2b48a8253c8be2dcdf82147dfa33ae8f7a.zip | |
Add more keyword rules.
Fixes #128.
| -rw-r--r-- | sec_certs/cert_rules.py | 80 | ||||
| -rw-r--r-- | sec_certs/helpers.py | 24 | ||||
| -rw-r--r-- | tests/data/settings_test.yaml | 4 |
3 files changed, 66 insertions, 42 deletions
diff --git a/sec_certs/cert_rules.py b/sec_certs/cert_rules.py index f1e7184f..3d0ab08e 100644 --- a/sec_certs/cert_rules.py +++ b/sec_certs/cert_rules.py @@ -1,6 +1,6 @@ import copy import re -from typing import Dict, List, Pattern, Union +from typing import Dict, List, Pattern REGEXEC_SEP = r'[ ,;\]”)(]' @@ -43,7 +43,7 @@ rules_vendor = [ 'Axalto', '(?:Oberthur|OBERTHUR)', '(?:Idemia|IDEMIA)', - '(?:G\&D|G\+D|Giesecke+Devrient|Giesecke \& Devrient)', + r'(?:G\&D|G\+D|Giesecke\+Devrient|Giesecke \& Devrient)', 'Philips', 'Sagem', ] @@ -108,32 +108,32 @@ rules_security_level = [ ] rules_security_assurance_components = [ - r'ACE_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'ACM_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'ACO_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'ADO_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'ADV_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'AGD_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'ALC_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'ATE_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'AVA_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'AMA_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'APE_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'ASE_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)' + r'ACE(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'ACM(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'ACO(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'ADO(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'ADV(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'AGD(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'ALC(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'ATE(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'AVA(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'AMA(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'APE(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'ASE(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)' ] rules_security_functional_components = [ - r'FAU_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'FCO_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'FCS_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'FDP_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'FIA_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'FMT_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'FPR_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'FPT_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'FRU_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'FTA_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)', - r'FTP_[A-Z]{3}(?:\.[0-9]|\.[0-9]\.[0-9]|)' + r'FAU(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'FCO(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'FCS(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'FDP(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'FIA(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'FMT(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'FPR(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'FPT(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'FRU(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'FTA(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)', + r'FTP(?:_[A-Z]{3,4}){1,2}(?:\.[0-9]|\.[0-9]\.[0-9]|)' ] rules_cc_claims = [ @@ -159,7 +159,7 @@ rules_javacard = [ r'(?:Java Card|JavaCard) \(version [2-3]\.[0-9](?:\.[0-9]|)\)', r'(?:Global Platform|GlobalPlatform) [2-3]\.[0-9]\.[0-9]', r'(?:Global Platform|GlobalPlatform) \(version [2-3]\.[0-9]\.[0-9]\)', - ] +] rules_javacard_api_consts = [ # javacard API constants @@ -268,7 +268,7 @@ rules_cplc = [ rules_crypto_engines = [ 'TORNADO', 'SmartMX', - 'SmartMX2' + 'SmartMX2', 'NesCrypt', ] @@ -278,7 +278,27 @@ rules_crypto_libs = [ 'AT1 Secure RSA/ECC/SHA library', 'Crypto Library [v]*[0-9.]+', 'ATMEL Toolbox [0-9.]+', - 'v1.02.013' # Infineon's ROCA-vulnerable library + 'v1\\.02\\.013', # Infineon's ROCA-vulnerable library + 'OpenSSL', + 'LibreSSL', + 'BoringSSL', + 'MatrixSSL', + 'Nettle', + 'GnuTLS', + 'libtomcrypt', + 'BearSSL', + 'Botan', + 'Crypto\\+\\+', + 'wolfSSL', + 'mbedTLS', + 's2n', + 'NSS', + 'libgcrypt', + 'BouncyCastle', + 'cryptlib', + 'NaCl', + 'libsodium', + 'libsecp256k1' ] rules_IC_data_groups = [ @@ -298,8 +318,10 @@ rules_defenses = [ 'SPA', 'DPA', 'DFA', - '[Ff]+ault induction', + '[Ff]+ault [iI]nduction', + '[Ff]+ault [iI]njection', 'ROCA', + '[tT]iming [aA]ttacks?' ] rules_certification_process = [ diff --git a/sec_certs/helpers.py b/sec_certs/helpers.py index 9b8b0946..2816becb 100644 --- a/sec_certs/helpers.py +++ b/sec_certs/helpers.py @@ -240,13 +240,13 @@ def search_only_headers_anssi(filepath: Path): (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)()Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur (.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, - 'Référence du rapport de certification(.+)Nom des produits(.+)Référence/version des produits(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur\(s\)(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'), + 'Référence du rapport de certification(.+)Nom des produits(.+)Référence/version des produits(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur\\(s\\)(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom des produits(.+)Référence/version des produits(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur (.+)Centre d\'évaluation(.+)Accords de reconnaissance'), (HEADER_TYPE.HEADER_FULL, - 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), + 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\\(s\\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, - 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), + 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\\(s\\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, @@ -254,13 +254,13 @@ def search_only_headers_anssi(filepath: Path): (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d\’évaluation et version(.+)Niveau d\’évaluation(.+)Développeurs(.+)Centre d\’évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, - 'Référence du rapport de certification(.+)Nom du produit \(référence/version\)(.+)Nom de la TOE \(référence/version\)(.+)Conformité à un profil de protection(.+)Critères d\’évaluation et version(.+)Niveau d\’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), + 'Référence du rapport de certification(.+)Nom du produit \\(référence/version\\)(.+)Nom de la TOE \\(référence/version\\)(.+)Conformité à un profil de protection(.+)Critères d\’évaluation et version(.+)Niveau d\’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, - 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), + 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\\(s\\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, - 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur\(s\)(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'), + 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur\\(s\\)(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, - 'Référence du rapport de certification(.+)Nom du produit \(référence/version\)(.+)Nom de la TOE \(référence/version\)(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'), + 'Référence du rapport de certification(.+)Nom du produit \\(référence/version\\)(.+)Nom de la TOE \\(référence/version\\)(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence du produit(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, @@ -269,13 +269,13 @@ def search_only_headers_anssi(filepath: Path): (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, - 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)d’évaluation(.+)Accords de reconnaissance applicables'), + 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\\(s\\)(.+)d’évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à des profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, - 'Référence du rapport de certification(.+)Nom du produit \(référence/version\)(.+)Nom de la TOE \(référence/version\)(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), + 'Référence du rapport de certification(.+)Nom du produit \\(référence/version\\)(.+)Nom de la TOE \\(référence/version\\)(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, 'Certification Report(.+)Nom du produit(.+)Référence/version du produit(.*)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, @@ -285,7 +285,7 @@ def search_only_headers_anssi(filepath: Path): (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, - 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), + 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\\(s\\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Versions du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'), (HEADER_TYPE.HEADER_FULL, @@ -297,11 +297,11 @@ def search_only_headers_anssi(filepath: Path): (HEADER_TYPE.HEADER_FULL, 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developers(.+)Evaluation facility(.+)Recognition arrangements'), (HEADER_TYPE.HEADER_FULL, - 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer\(s\)(.+)Evaluation facility(.+)Recognition arrangements'), + 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer\\(s\\)(.+)Evaluation facility(.+)Recognition arrangements'), (HEADER_TYPE.HEADER_FULL, 'Certification report reference(.+)Products names(.+)Products references(.+)protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developers(.+)Evaluation facility(.+)Recognition arrangements'), (HEADER_TYPE.HEADER_FULL, - 'Certification report reference(.+)Product name \(reference / version\)(.+)TOE name \(reference / version\)(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developers(.+)Evaluation facility(.+)Recognition arrangements'), + 'Certification report reference(.+)Product name \\(reference / version\\)(.+)TOE name \\(reference / version\\)(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developers(.+)Evaluation facility(.+)Recognition arrangements'), (HEADER_TYPE.HEADER_FULL, 'Certification report reference(.+)TOE name(.+)Product\'s reference/ version(.+)TOE\'s reference/ version(.+)Conformité à un profil de protection(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer (.+)Evaluation facility(.+)Recognition arrangements'), diff --git a/tests/data/settings_test.yaml b/tests/data/settings_test.yaml index d05bc6db..5815aef5 100644 --- a/tests/data/settings_test.yaml +++ b/tests/data/settings_test.yaml @@ -37,4 +37,6 @@ cert_threshold: fips_latest_snapshot: description: Url for the latest snapshot of FIPS dataset value: https://seccerts.org/static/fips_dset_ad8734a39b856ca1a1b7b073713872359bae7545.json - +enable_progress_bars: + description: Whether to enable pretty-printed progress bars while processing. + value: False |
