CWE-295. А Вы точно выясняете все способы отключения SSL-проверок в коде?
CWE-295 — неправильная проверка сертификата, включая игнорирование ошибок цепочки доверия. Близкие CWE: CWE-296 (Improper Certificate Validation in TLS) и CWE-297 (Improper Hostname Verification).
Делюсь с Вами очередной версией 2-х мегарегулярок для выявления всех когда-либо встретившихся мне способов отключения проверки цепочки сертификатов либо удаленного хоста.
Давайте проверим насколько хорошо Вы контролируете внешние взаимодействия Вашего кода со сторонними приложениями при помощи SAST/линтеров.
Не важно о чем код: запуск удаленной команды на Power Shell, запуск cURL, запуск Node.js и т.д. Если в Вашем коде имеется обращение к стороннему ресурсу, вполне вероятно, хотя бы какая-нибудь строка вызова составлена небезопасно, коробочные правила используемых Вами SAST не могут покрыть все кейсы, особенно, в неподдерживаемом файле.
Сами регулярные выражения для проверки Вашего кода:
{
"r1": "(?i)((ssl|session)[.]{0,1}verify[: -_\"'=]{1,6}false['\"\\]{0,3}|^ *ssl *[: -_\"'=]{1,6} *false|disableTLS['\": ]{2,4}true|requests.get(.*verify[ ]{0,5}= *False.*)|verify=False|requireSSL *}= *('|\")false('|\")|-(SkipCACheck|SkipCNCheck|SkipRevocationCheck))"
}(?i)(-allowUntrusted[ \"\']{0,3}=[ \"\']{0,3}true|tls(\.|)Enabled[ ]{0,3}(=|:)[ ]{0,3}false|strict-ssl false|strict-ssl[ ]{1,3}=[ ]{1,3}false|--insecure-skip-tls-verify|--skip-tls-verify|--(insecure|allow(|-)untrusted)( |\r?$)|--insecure-registry|http\.ssl\.(insecure|ignore\.validity\.dates)[ \"\']{0,3}=[ \"\']{0,3}(1|true)[ \"\']{0,1}|<AllowUntrustedCertificate>[ ]{0,2}True[ ]{0,2}<\/AllowUntrustedCertificate>|(skipCertCheck|sslmode|allow(-|)Untrusted(|Certificate)|NODE_TLS_REJECT_UNAUTHORIZED)[ \"\']{0,3}(:|=)[ \"\']{0,3}(0|true|disable)[ \"\']{0,1}|--no-check-certificate https:\/\/|urllib3\.disable_warnings|--[ ]{1,3}disable-tls[ ]{1,3}true|--[ ]{1,3}secure-http[ ]{1,3}false|connection\.ssl\.enabled:[ ]{0,3}("|)false("|)|ssl-errors[ ]{0,3}(=|:)[ ]{0,3}true|rejectUnauthorized(|:).*false|TrustServerCertificate *= *False|isAllowInsecureProtocol *= *true|--use_tls *= *false|('|")use_tls('|"), *false|isAllowInsecureProtocol *= *true|NODE_TLS_REJECT_UNAUTHORIZED:? *\n?\r? *value: *("|'|)0("|'|)|tls: *\n?\r?(.*#.*\n?\r?)? *enabled: *("|'|)false("|'|)|Verify-Peer *("|'|=|)false|http\.ssl\.allowall[ \"\']{0,3}=[ \"\']{0,3}(0|false)[ \"\']{0,1}|--disable-host-check|ENABLE_TLS *(:|=) *false|"insecureTls": *("|'|)true("|'|)|((Enable|use)SSl("|'|) *(:|=) *(false|0))|"tlsConfigurationType": "(?!require).*"|host_key_checking *= *False|ANSIBLE_GALAXY_IGNORE *= *(yes|true)|ignore_certs *= *(yes|true)|\s+tls:\s*false|\s+ssl:(\s*enabled:)? *false)На случай, если длинные строки поломаны блоком кода (ели вставил в пост):
Если регулярки не покрыли все известные Вам кейсы или наоборот действительно помогли, добро пожаловать в комментарии.


