භාවිතා කළ පුස්තකාල සඳහා අවදානම් ස්කෑනරය භාවිතා කිරීම - GitlabCI හි යැපීම පරීක්ෂා කරන්න

අවදානම් කළමනාකරණයේ වැදගත් කොටසක් වන්නේ නවීන පද්ධති සෑදෙන මෘදුකාංග සංරචකවල සැපයුම් දාමය හොඳින් අවබෝධ කර ගැනීම සහ සුරක්ෂිත කිරීමයි. Agile සහ DevOps කණ්ඩායම් සංවර්ධන කාලය සහ පිරිවැය අඩු කිරීම සඳහා විවෘත මූලාශ්‍ර පුස්තකාල සහ රාමු පුළුල් ලෙස භාවිතා කරයි. නමුත් මෙම පදක්කම ද අවාසියක් ඇත: අන් අයගේ වැරදි සහ දුර්වලතා උරුම කර ගැනීමේ අවස්ථාව.

පැහැදිලිවම, කණ්ඩායම එහි යෙදුම්වල ඇතුළත් කර ඇති විවෘත මූලාශ්‍ර සංරචක දැන ගැනීමට වග බලා ගත යුතුය, දන්නා විශ්වාසදායක අනුවාදයන් දන්නා විශ්වාසදායක මූලාශ්‍රවලින් බාගත කර ඇති බවට සහතික විය යුතුය, සහ අලුතින් සොයාගත් දුර්වලතා ගැලපීමෙන් පසුව සංරචකවල යාවත්කාලීන කළ අනුවාද බාගත කළ යුතුය.

මෙම පළකිරීමේදී, ඔබගේ කේතය සමඟ බරපතල ගැටළු අනාවරණය වුවහොත්, ගොඩනැගීම නවතා දැමීමට OWASP යැපුම් පරීක්ෂාව භාවිතා කිරීම අපි බලමු.

"Agile Projects හි සංවර්ධන ආරක්ෂාව" යන පොතේ එය පහත පරිදි විස්තර කෙරේ. OWASP යැපුම් පිරික්සුම යනු යෙදුමක භාවිතා වන සියලුම විවෘත මූලාශ්‍ර සංරචක ලැයිස්තුගත කර ඒවායේ ඇති දුර්වලතා පෙන්වන නිදහස් ස්කෑනරයකි. Java, .NET, Ruby (gemspec), PHP (composer), Node.js සහ Python සඳහා මෙන්ම සමහර C/C++ ව්‍යාපෘති සඳහාද අනුවාද ඇත. Ant, Maven සහ Gradle ඇතුළු පොදු ගොඩනැගීමේ මෙවලම් සහ Jenkins වැනි අඛණ්ඩ ඒකාබද්ධතා සේවාදායකයන් සමඟ යැපුම් පරීක්ෂාව ඒකාබද්ධ වේ.

යැපුම් පරීක්ෂාව NIST හි ජාතික අවදානම් දත්ත ගබඩාවෙන් (NVD) දන්නා අවදානම් සහිත සියලුම සංරචක වාර්තා කරන අතර NVD ප්‍රවෘත්ති සංග්‍රහවලින් දත්ත සමඟ යාවත්කාලීන වේ.

වාසනාවකට මෙන්, මේ සියල්ල OWASP යැපුම් පිරික්සුම් ව්‍යාපෘතිය හෝ වාණිජ වැඩසටහන් වැනි මෙවලම් භාවිතයෙන් ස්වයංක්‍රීයව සිදු කළ හැක. කළු තාරා, JFrog Xray, ස්නික්, Nexus Lifecycle Sonatype හෝ SourceClear.

විවෘත මූලාශ්‍ර පරායත්තතා ස්වයංක්‍රීයව ඉන්වෙන්ටරි කිරීමට, දන්නා දුර්වලතා සහිත පුස්තකාල සහ පුස්තකාලවල යල් පැන ගිය අනුවාද හඳුනා ගැනීමට සහ බරපතල ගැටළු අනාවරණය වුවහොත් ගොඩනැගීම් නවතා දැමීමට මෙම මෙවලම් නල මාර්ග ගොඩනැගීමට ඇතුළත් කළ හැකිය.

OWASP යැපුම් පරීක්ෂාව

යැපුම් පිරික්සුම ක්‍රියා කරන ආකාරය පරීක්ෂා කිරීමට සහ නිරූපණය කිරීමට, අපි මෙම ගබඩාව භාවිතා කරමු පරායත්ත-පරීක්ෂා-උදාහරණය.

HTML වාර්තාව බැලීම සඳහා, ඔබ ඔබේ gitlab-runner මත 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 {
    }
}

රැස්වීම අවසානයේ ඔබට මෙම පින්තූරය දැකිය හැකිය:

භාවිතා කළ පුස්තකාල සඳහා අවදානම් ස්කෑනරය භාවිතා කිරීම - GitlabCI හි යැපීම පරීක්ෂා කරන්න

සබැඳිය අනුගමනය කර යැපුම් පිරික්සුම් වාර්තාව බලන්න.

පළමු තිර රුව සාරාංශයක් සහිත වාර්තාවේ ඉහළ කොටසයි.

භාවිතා කළ පුස්තකාල සඳහා අවදානම් ස්කෑනරය භාවිතා කිරීම - GitlabCI හි යැපීම පරීක්ෂා කරන්න

දෙවන තිර රුව විස්තර CVE-2017-5638. මෙන්න අපි CVE මට්ටම සහ සූරාකෑම් සඳහා සබැඳි දකිමු.

භාවිතා කළ පුස්තකාල සඳහා අවදානම් ස්කෑනරය භාවිතා කිරීම - GitlabCI හි යැපීම පරීක්ෂා කරන්න

තුන්වන තිර පිටපත log4j-api-2.7.jar හි විස්තර වේ. CVE මට්ටම් 7.5 සහ 9.8 බව අපට පෙනේ.

භාවිතා කළ පුස්තකාල සඳහා අවදානම් ස්කෑනරය භාවිතා කිරීම - GitlabCI හි යැපීම පරීක්ෂා කරන්න

සිව්වන තිර පිටපත වන්නේ Commons-fileupload-1.3.2.jar හි විස්තර වේ. CVE මට්ටම් 7.5 සහ 9.8 බව අපට පෙනේ.

භාවිතා කළ පුස්තකාල සඳහා අවදානම් ස්කෑනරය භාවිතා කිරීම - GitlabCI හි යැපීම පරීක්ෂා කරන්න

ඔබට gitlab පිටු භාවිතා කිරීමට අවශ්‍ය නම්, එය ක්‍රියා නොකරනු ඇත - වැටුණු කාර්යයක් පුරාවස්තුවක් නිර්මාණය නොකරයි.

උදාහරණය මෙතනින් https://gitlab.com/anton_patsev/dependency-check-example-gitlab-pages.

ප්‍රතිදානය ගොඩනැගීම: කෞතුක වස්තු නැත, මට html වාර්තාව නොපෙනේ. ඔබ කෞතුක භාණ්ඩය උත්සාහ කළ යුතුය: සෑම විටම

https://gitlab.com/anton_patsev/dependency-check-example-gitlab-pages/-/jobs/400004246

භාවිතා කළ පුස්තකාල සඳහා අවදානම් ස්කෑනරය භාවිතා කිරීම - GitlabCI හි යැපීම පරීක්ෂා කරන්න

CVE අවදානම් මට්ටම නියාමනය කිරීම

gitlab-ci.yaml ගොනුවේ වැදගත්ම රේඛාව:

mvn $MAVEN_CLI_OPTS test org.owasp:dependency-check-maven:check -DfailBuildOnCVSS=7

failBuildOnCVSS පරාමිතිය සමඟින් ඔබට ප්‍රතිචාර දැක්වීමට අවශ්‍ය CVE අවදානම් මට්ටම වෙනස් කළ හැක.

NIST Vulnerability Database (NVD) අන්තර්ජාලයෙන් බාගත කිරීම

NIST නිරන්තරයෙන් අන්තර්ජාලයෙන් NIST අවදානම් දත්ත සමුදායන් (NVD) බාගත කරන බව ඔබ දැක තිබේද:

භාවිතා කළ පුස්තකාල සඳහා අවදානම් ස්කෑනරය භාවිතා කිරීම - GitlabCI හි යැපීම පරීක්ෂා කරන්න

බාගත කිරීම සඳහා, ඔබට උපයෝගීතාව භාවිතා කළ හැකිය nist_data_mirror_golang

අපි එය ස්ථාපනය කර දියත් කරමු.

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 වෙබ් සේවාදායකය වින්‍යාස කළ යුතුය (උදාහරණයක් ලෙස, ඔබේ gitlab-runner මත).

අවම 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

DevOps සහ ආරක්ෂාව ගැන Telegram කතාබස්
Telegram නාලිකාව DevSecOps / SSDLC - ආරක්ෂිත සංවර්ධනය

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න