ಆಧುನಿಕ ವ್ಯವಸ್ಥೆಗಳನ್ನು ರೂಪಿಸುವ ಸಾಫ್ಟ್ವೇರ್ ಘಟಕಗಳ ಪೂರೈಕೆ ಸರಪಳಿಯನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ಸುರಕ್ಷಿತಗೊಳಿಸುವುದು ದುರ್ಬಲತೆ ನಿರ್ವಹಣೆಯ ಪ್ರಮುಖ ಭಾಗವಾಗಿದೆ. ಅಗೈಲ್ ಮತ್ತು DevOps ತಂಡಗಳು ಅಭಿವೃದ್ಧಿಯ ಸಮಯ ಮತ್ತು ವೆಚ್ಚವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಮುಕ್ತ ಮೂಲ ಗ್ರಂಥಾಲಯಗಳು ಮತ್ತು ಚೌಕಟ್ಟುಗಳನ್ನು ವ್ಯಾಪಕವಾಗಿ ಬಳಸುತ್ತವೆ. ಆದರೆ ಈ ಪದಕವು ತೊಂದರೆಯನ್ನೂ ಹೊಂದಿದೆ: ಇತರ ಜನರ ತಪ್ಪುಗಳು ಮತ್ತು ದುರ್ಬಲತೆಗಳನ್ನು ಆನುವಂಶಿಕವಾಗಿ ಪಡೆಯುವ ಅವಕಾಶ.
ನಿಸ್ಸಂಶಯವಾಗಿ, ತಂಡವು ತನ್ನ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ ಯಾವ ಓಪನ್ ಸೋರ್ಸ್ ಘಟಕಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ತಿಳಿದಿರಬೇಕು, ತಿಳಿದಿರುವ ವಿಶ್ವಾಸಾರ್ಹ ಆವೃತ್ತಿಗಳನ್ನು ತಿಳಿದಿರುವ ವಿಶ್ವಾಸಾರ್ಹ ಮೂಲಗಳಿಂದ ಡೌನ್ಲೋಡ್ ಮಾಡಲಾಗಿದೆಯೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ಮತ್ತು ಹೊಸದಾಗಿ ಪತ್ತೆಯಾದ ದೋಷಗಳನ್ನು ಸರಿಪಡಿಸಿದ ನಂತರ ಘಟಕಗಳ ನವೀಕರಿಸಿದ ಆವೃತ್ತಿಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಿ.
ಈ ಪೋಸ್ಟ್ನಲ್ಲಿ, ನಿಮ್ಮ ಕೋಡ್ನೊಂದಿಗೆ ಗಂಭೀರ ಸಮಸ್ಯೆಗಳನ್ನು ಪತ್ತೆಮಾಡಿದರೆ ಬಿಲ್ಡ್ ಅನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲು ನಾವು OWASP ಅವಲಂಬನೆ ಪರಿಶೀಲನೆಯನ್ನು ಬಳಸುತ್ತೇವೆ.
"ಅಗೈಲ್ ಪ್ರಾಜೆಕ್ಟ್ಗಳಲ್ಲಿ ಡೆವಲಪ್ಮೆಂಟ್ ಸೆಕ್ಯುರಿಟಿ" ಪುಸ್ತಕದಲ್ಲಿ ಇದನ್ನು ಈ ಕೆಳಗಿನಂತೆ ವಿವರಿಸಲಾಗಿದೆ. OWASP ಡಿಪೆಂಡೆನ್ಸಿ ಚೆಕ್ ಎನ್ನುವುದು ಉಚಿತ ಸ್ಕ್ಯಾನರ್ ಆಗಿದ್ದು ಅದು ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಬಳಸಲಾದ ಎಲ್ಲಾ ತೆರೆದ ಮೂಲ ಘಟಕಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅವುಗಳು ಒಳಗೊಂಡಿರುವ ದೋಷಗಳನ್ನು ತೋರಿಸುತ್ತದೆ. Java, .NET, Ruby (gemspec), PHP (ಸಂಯೋಜಕ), Node.js ಮತ್ತು ಪೈಥಾನ್, ಹಾಗೆಯೇ ಕೆಲವು C/C++ ಯೋಜನೆಗಳಿಗೆ ಆವೃತ್ತಿಗಳಿವೆ. ಆಂಟ್, ಮಾವೆನ್ ಮತ್ತು ಗ್ರ್ಯಾಡಲ್ ಮತ್ತು ಜೆಂಕಿನ್ಸ್ನಂತಹ ನಿರಂತರ ಏಕೀಕರಣ ಸರ್ವರ್ಗಳು ಸೇರಿದಂತೆ ಸಾಮಾನ್ಯ ನಿರ್ಮಾಣ ಸಾಧನಗಳೊಂದಿಗೆ ಅವಲಂಬನೆ ಪರಿಶೀಲನೆಯು ಸಂಯೋಜನೆಗೊಳ್ಳುತ್ತದೆ.
ಅವಲಂಬನೆ ಪರಿಶೀಲನೆಯು ಎನ್ಐಎಸ್ಟಿಯ ರಾಷ್ಟ್ರೀಯ ದುರ್ಬಲತೆ ಡೇಟಾಬೇಸ್ನಿಂದ (ಎನ್ವಿಡಿ) ತಿಳಿದಿರುವ ದುರ್ಬಲತೆಗಳೊಂದಿಗೆ ಎಲ್ಲಾ ಘಟಕಗಳನ್ನು ವರದಿ ಮಾಡುತ್ತದೆ ಮತ್ತು ಎನ್ವಿಡಿ ಸುದ್ದಿ ಫೀಡ್ಗಳಿಂದ ಡೇಟಾದೊಂದಿಗೆ ನವೀಕರಿಸಲಾಗಿದೆ.
ಅದೃಷ್ಟವಶಾತ್, OWASP ಡಿಪೆಂಡೆನ್ಸಿ ಚೆಕ್ ಪ್ರಾಜೆಕ್ಟ್ ಅಥವಾ ವಾಣಿಜ್ಯ ಕಾರ್ಯಕ್ರಮಗಳಂತಹ ಸಾಧನಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಇವೆಲ್ಲವನ್ನೂ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮಾಡಬಹುದು
ತೆರೆದ ಮೂಲ ಅವಲಂಬನೆಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ದಾಸ್ತಾನು ಮಾಡಲು ಬಿಲ್ಡ್ ಪೈಪ್ಲೈನ್ಗಳಲ್ಲಿ ಈ ಉಪಕರಣಗಳನ್ನು ಸೇರಿಸಿಕೊಳ್ಳಬಹುದು, ತಿಳಿದಿರುವ ದುರ್ಬಲತೆಗಳನ್ನು ಹೊಂದಿರುವ ಲೈಬ್ರರಿಗಳು ಮತ್ತು ಲೈಬ್ರರಿಗಳ ಹಳೆಯ ಆವೃತ್ತಿಗಳನ್ನು ಗುರುತಿಸಬಹುದು ಮತ್ತು ಗಂಭೀರ ಸಮಸ್ಯೆಗಳು ಪತ್ತೆಯಾದರೆ ನಿರ್ಮಾಣಗಳನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಬಹುದು.
OWASP ಅವಲಂಬನೆ ಪರಿಶೀಲನೆ
ಡಿಪೆಂಡೆನ್ಸಿ ಚೆಕ್ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಪರೀಕ್ಷಿಸಲು ಮತ್ತು ಪ್ರದರ್ಶಿಸಲು, ನಾವು ಈ ರೆಪೊಸಿಟರಿಯನ್ನು ಬಳಸುತ್ತೇವೆ
HTML ವರದಿಯನ್ನು ವೀಕ್ಷಿಸಲು, ನಿಮ್ಮ ಗಿಟ್ಲ್ಯಾಬ್-ರನ್ನರ್ನಲ್ಲಿ ನೀವು nginx ವೆಬ್ ಸರ್ವರ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ.
ಕನಿಷ್ಠ nginx ಸಂರಚನೆಯ ಉದಾಹರಣೆ:
server {
listen 9999;
listen [::]:9999;
server_name _;
root /home/gitlab-runner/builds;
location / {
autoindex on;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
ಅಸೆಂಬ್ಲಿಯ ಕೊನೆಯಲ್ಲಿ ನೀವು ಈ ಚಿತ್ರವನ್ನು ನೋಡಬಹುದು:
ಲಿಂಕ್ ಅನ್ನು ಅನುಸರಿಸಿ ಮತ್ತು ಅವಲಂಬನೆ ಪರಿಶೀಲನೆ ವರದಿಯನ್ನು ನೋಡಿ.
ಮೊದಲ ಸ್ಕ್ರೀನ್ಶಾಟ್ ಸಾರಾಂಶದೊಂದಿಗೆ ವರದಿಯ ಮೇಲಿನ ಭಾಗವಾಗಿದೆ.
ಎರಡನೇ ಸ್ಕ್ರೀನ್ಶಾಟ್ ವಿವರಗಳು CVE-2017-5638. ಇಲ್ಲಿ ನಾವು CVE ಮಟ್ಟ ಮತ್ತು ಶೋಷಣೆಗಳಿಗೆ ಲಿಂಕ್ಗಳನ್ನು ನೋಡುತ್ತೇವೆ.
ಮೂರನೇ ಸ್ಕ್ರೀನ್ಶಾಟ್ log4j-api-2.7.jar ನ ವಿವರವಾಗಿದೆ. CVE ಮಟ್ಟಗಳು 7.5 ಮತ್ತು 9.8 ಎಂದು ನಾವು ನೋಡುತ್ತೇವೆ.
ನಾಲ್ಕನೇ ಸ್ಕ್ರೀನ್ಶಾಟ್ ಕಾಮನ್ಸ್-ಫೈಲ್ಅಪ್ಲೋಡ್-1.3.2.jar ನ ವಿವರವಾಗಿದೆ. CVE ಮಟ್ಟಗಳು 7.5 ಮತ್ತು 9.8 ಎಂದು ನಾವು ನೋಡುತ್ತೇವೆ.
ನೀವು ಗಿಟ್ಲ್ಯಾಬ್ ಪುಟಗಳನ್ನು ಬಳಸಲು ಬಯಸಿದರೆ, ಅದು ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ - ಬಿದ್ದ ಕಾರ್ಯವು ಕಲಾಕೃತಿಯನ್ನು ರಚಿಸುವುದಿಲ್ಲ.
ಉದಾಹರಣೆ ಇಲ್ಲಿ
ಬಿಲ್ಡ್ ಔಟ್ಪುಟ್: ಯಾವುದೇ ಕಲಾಕೃತಿಗಳಿಲ್ಲ, ನನಗೆ html ವರದಿ ಕಾಣಿಸುತ್ತಿಲ್ಲ. ನೀವು ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ ಅನ್ನು ಪ್ರಯತ್ನಿಸಬೇಕು: ಯಾವಾಗಲೂ
CVE ದುರ್ಬಲತೆಗಳ ಮಟ್ಟವನ್ನು ನಿಯಂತ್ರಿಸುವುದು
gitlab-ci.yaml ಫೈಲ್ನಲ್ಲಿನ ಪ್ರಮುಖ ಸಾಲು:
mvn $MAVEN_CLI_OPTS test org.owasp:dependency-check-maven:check -DfailBuildOnCVSS=7
FailBuildOnCVSS ಪ್ಯಾರಾಮೀಟರ್ನೊಂದಿಗೆ ನೀವು ಪ್ರತಿಕ್ರಿಯಿಸಬೇಕಾದ CVE ದುರ್ಬಲತೆಗಳ ಮಟ್ಟವನ್ನು ಸರಿಹೊಂದಿಸಬಹುದು.
ಇಂಟರ್ನೆಟ್ನಿಂದ NIST ವಲ್ನರಬಿಲಿಟಿ ಡೇಟಾಬೇಸ್ (NVD) ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ
NIST ನಿರಂತರವಾಗಿ ಇಂಟರ್ನೆಟ್ನಿಂದ NIST ದುರ್ಬಲತೆ ಡೇಟಾಬೇಸ್ಗಳನ್ನು (NVD) ಡೌನ್ಲೋಡ್ ಮಾಡುವುದನ್ನು ನೀವು ಗಮನಿಸಿದ್ದೀರಾ:
ಡೌನ್ಲೋಡ್ ಮಾಡಲು, ನೀವು ಉಪಯುಕ್ತತೆಯನ್ನು ಬಳಸಬಹುದು
ಅದನ್ನು ಸ್ಥಾಪಿಸಿ ಮತ್ತು ಪ್ರಾರಂಭಿಸೋಣ.
yum -y install yum-plugin-copr
yum copr enable antonpatsev/nist_data_mirror_golang
yum -y install nist-data-mirror
systemctl start nist-data-mirror
Nist-data-mirror ಪ್ರಾರಂಭದಲ್ಲಿ NIST JSON CVE ಅನ್ನು /var/www/repos/nist-data-mirror/ ಗೆ ಅಪ್ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ 24 ಗಂಟೆಗಳಿಗೊಮ್ಮೆ ಡೇಟಾವನ್ನು ನವೀಕರಿಸುತ್ತದೆ.
CVE JSON NIST ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು, ನೀವು nginx ವೆಬ್ ಸರ್ವರ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, ನಿಮ್ಮ ಗಿಟ್ಲ್ಯಾಬ್-ರನ್ನರ್ನಲ್ಲಿ).
ಕನಿಷ್ಠ nginx ಸಂರಚನೆಯ ಉದಾಹರಣೆ:
server {
listen 12345;
listen [::]:12345;
server_name _;
root /var/www/repos/nist-data-mirror/;
location / {
autoindex on;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
mvn ಲಾಂಚ್ ಆಗಿರುವ ದೀರ್ಘ ರೇಖೆಯನ್ನು ಮಾಡದಿರಲು, ನಾವು ಪ್ಯಾರಾಮೀಟರ್ಗಳನ್ನು ಪ್ರತ್ಯೇಕ ವೇರಿಯಬಲ್ DEPENDENCY_OPTS ಗೆ ಸರಿಸುತ್ತೇವೆ.
ಅಂತಿಮ ಕನಿಷ್ಠ ಸಂರಚನೆ .gitlab-ci.yml ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:
variables:
MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
DEPENDENCY_OPTS: "-DfailBuildOnCVSS=7 -DcveUrlModified=http://localhost:12345/nvdcve-1.1-modified.json.gz -DcveUrlBase=http://localhost:12345/nvdcve-1.1-%d.json.gz"
cache:
paths:
- .m2/repository
verify:
stage: test
script:
- set +e
- mvn $MAVEN_CLI_OPTS install org.owasp:dependency-check-maven:check $DEPENDENCY_OPTS || EXIT_CODE=$?
- export PATH_WITHOUT_HOME=$(pwd | sed -e "s//home/gitlab-runner/builds//g")
- echo "************************* URL Dependency-check-report.html *************************"
- echo "http://$HOSTNAME:9999$PATH_WITHOUT_HOME/target/dependency-check-report.html"
- set -e
- exit ${EXIT_CODE}
tags:
- shell
ಮೂಲ: www.habr.com