የተጋላጭነት አስተዳደር አስፈላጊ አካል ዘመናዊ ሲስተሞችን ያካተቱትን የሶፍትዌር አካላት አቅርቦት ሰንሰለት በሚገባ መረዳት እና ደህንነቱን ማረጋገጥ ነው። Agile እና DevOps ቡድኖች የእድገት ጊዜን እና ወጪን ለመቀነስ ክፍት ምንጭ ቤተ-መጻሕፍት እና ማዕቀፎችን በስፋት ይጠቀማሉ። ነገር ግን ይህ ሜዳልያ ደግሞ አሉታዊ ጎን አለው: የሌሎች ሰዎችን ስህተቶች እና ተጋላጭነቶች ለመውረስ እድሉ.
በግልጽ ለማየት እንደሚቻለው ቡድኑ የትኞቹ ክፍት ምንጭ ክፍሎች በአፕሊኬሽኑ ውስጥ እንደሚካተቱ ማወቅ፣ የታወቁ ታማኝ ስሪቶች ከታወቁ ታማኝ ምንጮች መወረዳቸውን እና አዲስ የተገኙ ተጋላጭነቶች ከተጣበቁ በኋላ የተዘመኑ ክፍሎችን ማውረድ ማረጋገጥ አለበት።
በዚህ ልጥፍ ላይ፣ በኮድዎ ላይ ከባድ ችግሮች ካጋጠመው ግንባታን ለማስቆም OWASP ጥገኝነት ማረጋገጫን መጠቀምን እንመለከታለን።
በ "Agile Projects ውስጥ የእድገት ደህንነት" በሚለው መጽሐፍ ውስጥ እንደሚከተለው ተገልጿል. OWASP ጥገኝነት ቼክ በአንድ መተግበሪያ ውስጥ ጥቅም ላይ የዋሉ ሁሉንም ክፍት ምንጭ አካላት ካታሎግ የሚያደርግ እና በውስጣቸው ያሉትን ተጋላጭነቶች የሚያሳይ ነፃ ስካነር ነው። ለጃቫ፣ .NET፣ Ruby (gemspec)፣ ፒኤችፒ (አቀናባሪ)፣ ኖድ.ጅስ እና ፓይዘን እንዲሁም ለአንዳንድ የC/C++ ፕሮጀክቶች ስሪቶች አሉ። ጥገኝነት ቼክ ከ Ant፣ Maven እና Gradle፣ እና እንደ ጄንኪንስ ካሉ ተከታታይ የውህደት አገልጋዮች ጋር ይዋሃዳል።
የጥገኝነት ማረጋገጫ ሁሉንም የታወቁ ተጋላጭነቶች ከNIST ብሄራዊ የተጋላጭነት ዳታቤዝ (NVD) ሪፖርት ያደርጋል እና ከNVD የዜና ምግቦች በተገኘ መረጃ ተዘምኗል።
እንደ እድል ሆኖ፣ ይህ ሁሉ እንደ OWASP ጥገኝነት ማረጋገጫ ፕሮጀክት ወይም እንደ የንግድ ፕሮግራሞች ያሉ መሳሪያዎችን በመጠቀም በራስ-ሰር ሊከናወን ይችላል።
እነዚህ መሳሪያዎች ክፍት ምንጭ ጥገኝነቶችን በራስ ሰር ለመቆጠብ፣ የታወቁ ተጋላጭነቶችን የያዙ የቤተ-መጻህፍት እና የቤተ-መጻህፍት ስሪቶችን ለመለየት እና ከባድ ችግሮች ከታዩ ፅንስ ለማስወረድ በቧንቧ ግንባታ ውስጥ ሊካተቱ ይችላሉ።
OWASP ጥገኝነት ማረጋገጫ
ጥገኝነት ማረጋገጫ እንዴት እንደሚሰራ ለመፈተሽ እና ለማሳየት፣ ይህንን ማከማቻ እንጠቀማለን።
የኤችቲኤምኤል ዘገባን ለማየት የ nginx ድር አገልጋይ በእርስዎ gitlab-runner ላይ ማዋቀር ያስፈልግዎታል።
አነስተኛ የ 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 መሆናቸውን እናያለን.
የጊትላብ ገጾችን ለመጠቀም ከፈለጉ አይሰራም - የወደቀ ተግባር ቅርስ አይፈጥርም።
ምሳሌ እዚህ
ውፅዓት ይገንቡ፡ ምንም ቅርሶች የሉም፣ የኤችቲኤምኤል ዘገባውን አላየሁም። አንተ Artifact መሞከር አለበት: ሁልጊዜ
የ 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 ድር አገልጋይን (ለምሳሌ በ 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
ምንጭ: hab.com