aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJ08nY2021-12-16 16:02:06 +0100
committerJ08nY2021-12-16 16:35:21 +0100
commita6c02e2b48a8253c8be2dcdf82147dfa33ae8f7a (patch)
tree8ffc00afe38df79558067bac146d154f0cf58e01
parent43e121942e328a66c8a6957651f4b81dacf8d43e (diff)
downloadsec-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.py80
-rw-r--r--sec_certs/helpers.py24
-rw-r--r--tests/data/settings_test.yaml4
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