Η σημασία της ανάλυσης στοιχείων λογισμικού τρίτων (Software Composition Analysis - SCA) στη διαδικασία ανάπτυξης αυξάνεται με την κυκλοφορία ετήσιων αναφορών για τα τρωτά σημεία των βιβλιοθηκών ανοιχτού κώδικα, οι οποίες δημοσιεύονται από τις Synopsys, Sonatype, Snyk, White Source. Σύμφωνα με την έκθεση ο αριθμός των εντοπισμένων τρωτών σημείων ανοιχτού κώδικα το 2019 αυξήθηκε σχεδόν 1.5 φορές σε σύγκριση με το προηγούμενο έτος, ενώ τα στοιχεία ανοιχτού κώδικα χρησιμοποιούνται από το 60% έως το 80% των έργων. Σε ανεξάρτητη βάση, οι διαδικασίες SCA αποτελούν ξεχωριστή πρακτική των OWASP SAMM και BSIMM ως δείκτη ωριμότητας και το πρώτο εξάμηνο του 2020, η OWASP κυκλοφόρησε το νέο Πρότυπο επαλήθευσης στοιχείων λογισμικού OWASP (SCVS), παρέχοντας βέλτιστες πρακτικές για την επαλήθευση τρίτων εξαρτήματα συμβαλλόμενων μερών στην εφοδιαστική αλυσίδα BY.

Μια από τις πιο ενδεικτικές περιπτώσεις με την Equifax τον Μάιο του 2017. Άγνωστοι εισβολείς έλαβαν πληροφορίες για 143 εκατομμύρια Αμερικανούς, συμπεριλαμβανομένων των ονομάτων, των διευθύνσεων, των αριθμών κοινωνικής ασφάλισης και των αδειών οδήγησης. Σε 209 περιπτώσεις, τα έγγραφα περιελάμβαναν επίσης πληροφορίες για τις τραπεζικές κάρτες των θυμάτων. Αυτή η διαρροή προέκυψε ως αποτέλεσμα της εκμετάλλευσης μιας κρίσιμης ευπάθειας στο Apache Struts 000 (CVE-2-2017), ενώ η επιδιόρθωση κυκλοφόρησε τον Μάρτιο του 5638. Η εταιρεία είχε δύο μήνες για να εγκαταστήσει την ενημέρωση, αλλά κανείς δεν ασχολήθηκε με αυτό.
Αυτό το άρθρο θα συζητήσει το ζήτημα της επιλογής ενός εργαλείου για τη διεξαγωγή SCA από την άποψη της ποιότητας των αποτελεσμάτων της ανάλυσης. Θα παρέχεται επίσης μια λειτουργική σύγκριση των εργαλείων. Η διαδικασία ενσωμάτωσης σε CI/CD και δυνατότητες ολοκλήρωσης θα αφεθεί για τις επόμενες δημοσιεύσεις. Μια μεγάλη γκάμα εργαλείων παρουσιάστηκε από το OWASP , αλλά στην τρέχουσα ανασκόπηση θα αγγίξουμε μόνο το πιο δημοφιλές εργαλείο ανοιχτού κώδικα Έλεγχος εξάρτησης, την ελαφρώς λιγότερο γνωστή πλατφόρμα ανοιχτού κώδικα Dependency Track και τη λύση Enterprise Sonatype Nexus IQ. Θα κατανοήσουμε επίσης πώς λειτουργούν αυτές οι λύσεις και θα συγκρίνουμε τα αποτελέσματα που λαμβάνονται για ψευδώς θετικά αποτελέσματα.

Αρχή της λειτουργίας
είναι ένα βοηθητικό πρόγραμμα (CLI, maven, jenkins module, ant) που αναλύει αρχεία έργου, συλλέγει κομμάτια πληροφοριών σχετικά με εξαρτήσεις (όνομα πακέτου, ομάδα, τίτλος προδιαγραφών, έκδοση...), δημιουργεί μια γραμμή CPE (Common Platform Enumeration) , URL πακέτου ( PURL) και προσδιορίζει τρωτά σημεία για CPE/PURL από βάσεις δεδομένων (NVD, Sonatype OSS Index, NPM Audit API...), μετά την οποία δημιουργεί μια εφάπαξ αναφορά σε μορφή HTML, JSON, XML...
Ας δούμε πώς μοιάζει το CPE:
cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other- Μέρος: Ένδειξη ότι το στοιχείο σχετίζεται με την εφαρμογή (α), το λειτουργικό σύστημα (ο), το υλικό (η) (Απαιτείται)
- Πωλητής: Όνομα κατασκευαστή προϊόντος (Απαιτείται)
- Προϊόν: Όνομα προϊόντος (Απαιτείται)
- Εκδοχή: Έκδοση στοιχείου (Απαλαιωμένο στοιχείο)
- Ενημέρωση: Ενημέρωση πακέτου
- Έκδοση: Έκδοση παλαιού τύπου (καταργημένο στοιχείο)
- Γλώσσα: Γλώσσα που ορίζεται στο RFC-5646
- Έκδοση SW: Εκδοση ΛΟΓΙΣΜΙΚΟΥ
- Στόχος ΝΔ: Περιβάλλον λογισμικού στο οποίο λειτουργεί το προϊόν
- Στόχος HW: Το περιβάλλον υλικού στο οποίο λειτουργεί το προϊόν
- Άλλα: Πληροφορίες προμηθευτή ή προϊόντος
Ένα παράδειγμα CPE μοιάζει με αυτό:
cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:* Η γραμμή σημαίνει ότι η έκδοση CPE 2.3 περιγράφει το στοιχείο της εφαρμογής από τον κατασκευαστή pivotal_software με τίτλο spring_framework έκδοση 3.0.0. Αν ανοίξουμε μια ευπάθεια στο NVD, μπορούμε να δούμε μια αναφορά αυτού του CPE. Το πρώτο πρόβλημα που πρέπει να προσέξετε αμέσως είναι ότι το CVE στο NVD, σύμφωνα με το CPE, αναφέρει πρόβλημα στο πλαίσιο και όχι σε ένα συγκεκριμένο στοιχείο. Δηλαδή, εάν οι προγραμματιστές είναι στενά συνδεδεμένοι με το πλαίσιο και η εντοπισμένη ευπάθεια δεν επηρεάζει τις ενότητες που χρησιμοποιούν οι προγραμματιστές, ένας ειδικός ασφαλείας θα πρέπει με τον ένα ή τον άλλο τρόπο να αποσυναρμολογήσει αυτό το CVE και να σκεφτεί την ενημέρωση.
Η διεύθυνση URL χρησιμοποιείται επίσης από τα εργαλεία SCA. Η μορφή URL του πακέτου είναι η εξής:
scheme:type/namespace/name@version?qualifiers#subpath- Σχέδιο: Θα υπάρχει πάντα το "pkg" που υποδεικνύει ότι πρόκειται για διεύθυνση URL πακέτου (Απαιτείται)
- Τύπος: Ο «τύπος» της συσκευασίας ή το «πρωτόκολλο» της συσκευασίας, όπως maven, npm, nuget, gem, pypi κ.λπ. (Απαιτούμενο στοιχείο)
- Χώρος ονομάτων: Κάποιο πρόθεμα ονόματος, όπως αναγνωριστικό ομάδας Maven, κάτοχος εικόνας Docker, χρήστης GitHub ή οργανισμός. Προαιρετικό και εξαρτάται από τον τύπο.
- Όνομα: Όνομα πακέτου (Απαιτείται)
- Εκδοχή: Έκδοση πακέτου
- Προκριματικά: Πρόσθετα δεδομένα πιστοποίησης για το πακέτο, όπως λειτουργικό σύστημα, αρχιτεκτονική, διανομή κ.λπ. Προαιρετικά και ανά τύπο.
- Υποδιαδρομή: Πρόσθετη διαδρομή στο πακέτο σε σχέση με τη ρίζα του πακέτου
Για παράδειγμα:
pkg:golang/google.golang.org/genproto#googleapis/api/annotations
pkg:maven/org.apache.commons/io@1.3.4
pkg:pypi/django-package@1.11.1.dev1— μια διαδικτυακή πλατφόρμα που δέχεται έτοιμους λογαριασμούς υλικών (BOM) που δημιουργούνται и , δηλαδή έτοιμες προδιαγραφές για υπάρχουσες εξαρτήσεις. Αυτό είναι ένα αρχείο XML που περιγράφει τις εξαρτήσεις - όνομα, κατακερματισμοί, url πακέτου, εκδότης, άδεια χρήσης. Στη συνέχεια, το Dependency Track αναλύει το BOM, εξετάζει τα CVE που είναι διαθέσιμα στις προσδιορισμένες εξαρτήσεις από τη βάση δεδομένων ευπάθειας (NVD, Sonatype OSS Index...), μετά από τα οποία δημιουργεί γραφήματα, υπολογίζει μετρήσεις, ενημερώνει τακτικά δεδομένα σχετικά με την κατάσταση ευπάθειας των στοιχείων .
Ένα παράδειγμα για το πώς μπορεί να μοιάζει ένα BOM σε μορφή XML:
<?xml version="1.0" encoding="UTF-8"?>
<bom xmlns="http://cyclonedx.org/schema/bom/1.2" serialNumber="urn:uuid:3e671687-395b-41f5-a30f-a58921a69b79" version="1">
<components>
<component type="library">
<publisher>Apache</publisher>
<group>org.apache.tomcat</group>
<name>tomcat-catalina</name>
<version>9.0.14</version>
<hashes>
<hash alg="MD5">3942447fac867ae5cdb3229b658f4d48</hash>
<hash alg="SHA-1">e6b1000b94e835ffd37f4c6dcbdad43f4b48a02a</hash>
<hash alg="SHA-256">f498a8ff2dd007e29c2074f5e4b01a9a01775c3ff3aeaf6906ea503bc5791b7b</hash>
<hash alg="SHA-512">e8f33e424f3f4ed6db76a482fde1a5298970e442c531729119e37991884bdffab4f9426b7ee11fccd074eeda0634d71697d6f88a460dce0ac8d627a29f7d1282</hash>
</hashes>
<licenses>
<license>
<id>Apache-2.0</id>
</license>
</licenses>
<purl>pkg:maven/org.apache.tomcat/tomcat-catalina@9.0.14</purl>
</component>
<!-- More components here -->
</components>
</bom>Το BOM μπορεί να χρησιμοποιηθεί όχι μόνο ως είσοδος στο Dependency Track, αλλά και για την απογραφή στοιχείων λογισμικού στην αλυσίδα εφοδιασμού, για παράδειγμα, για την παροχή λογισμικού σε έναν πελάτη. Το 2014 μάλιστα προτάθηκε νόμος στις Ηνωμένες Πολιτείες , το οποίο ανέφερε ότι κατά την αγορά λογισμικού, οποιαδήποτε κατάσταση. Το ίδρυμα πρέπει να ζητήσει BOM για να αποτρέψει τη χρήση ευάλωτων στοιχείων, αλλά ο νόμος δεν έχει ακόμη τεθεί σε ισχύ.
Επιστρέφοντας στο SCA, το Dependency Track έχει έτοιμες ενσωματώσεις με πλατφόρμες ειδοποιήσεων όπως το Slack, συστήματα διαχείρισης ευπάθειας όπως το Kenna Security. Αξίζει επίσης να πούμε ότι το Dependency Track, μεταξύ άλλων, εντοπίζει ξεπερασμένες εκδόσεις πακέτων και παρέχει πληροφορίες για άδειες χρήσης (λόγω υποστήριξης SPDX).
Αν μιλάμε συγκεκριμένα για την ποιότητα του SCA, τότε υπάρχει μια θεμελιώδης διαφορά.
Το Dependency Track δεν δέχεται το έργο ως είσοδο, αλλά μάλλον το BOM. Αυτό σημαίνει ότι αν θέλουμε να δοκιμάσουμε το έργο, πρέπει πρώτα να δημιουργήσουμε το bom.xml, για παράδειγμα χρησιμοποιώντας το CycloneDX. Έτσι, το Dependency Track εξαρτάται άμεσα από το CycloneDX. Ταυτόχρονα, επιτρέπει την προσαρμογή. Αυτό έγραψε η ομάδα του OZON για τη συναρμολόγηση αρχείων BOM για έργα Golang για περαιτέρω σάρωση μέσω του Dependency Track.
είναι μια εμπορική λύση SCA από τη Sonatype, η οποία αποτελεί μέρος του οικοσυστήματος Sonatype, το οποίο περιλαμβάνει επίσης το Nexus Repository Manager. Το Nexus IQ μπορεί να δεχτεί ως δεδομένα εισόδου τόσο πολεμικά αρχεία (για έργα java) μέσω της διεπαφής ιστού ή API και BOM, εάν ο οργανισμός σας δεν είχε χρόνο να μεταβεί από το CycloneDX σε μια νέα λύση. Σε αντίθεση με τις λύσεις ανοιχτού κώδικα, το IQ αναφέρεται όχι μόνο στο CP/PURL στο αναγνωρισμένο στοιχείο και στην αντίστοιχη ευπάθεια στη βάση δεδομένων, αλλά λαμβάνει επίσης υπόψη τη δική του έρευνα, για παράδειγμα, το όνομα της ευάλωτης συνάρτησης ή κλάσης. Οι μηχανισμοί του IQ θα συζητηθούν αργότερα στην ανάλυση των αποτελεσμάτων.
Ας συνοψίσουμε μερικά από τα λειτουργικά χαρακτηριστικά και ας εξετάσουμε επίσης τις υποστηριζόμενες γλώσσες για ανάλυση:
Γλώσσα
Nexus IQ
Έλεγχος εξάρτησης
Κομμάτι εξάρτησης
Java
+
+
+
C / C ++
+
+
-
C#
+
+
-
. Καθαρά
+
+
+
Ερλάνγκ
-
-
+
JavaScript (NodeJS)
+
+
+
PHP
+
+
+
Python
+
+
+
Ruby
+
+
+
Perl
-
-
-
Scala
+
+
+
Στόχος Γ
+
+
-
Swift
+
+
-
R
+
-
-
Go
+
+
+
Λειτουργικότητα
Λειτουργικότητα
Nexus IQ
Έλεγχος εξάρτησης
Κομμάτι εξάρτησης
Η δυνατότητα να διασφαλιστεί ότι τα στοιχεία που χρησιμοποιούνται στον πηγαίο κώδικα ελέγχονται για καθαρότητα με άδεια χρήσης
+
-
+
Δυνατότητα σάρωσης και ανάλυσης για τρωτά σημεία και καθαρότητα αδειών για εικόνες Docker
+ Ενσωμάτωση με την Clair
-
-
Δυνατότητα διαμόρφωσης πολιτικών ασφαλείας για χρήση βιβλιοθηκών ανοιχτού κώδικα
+
-
-
Δυνατότητα σάρωσης αποθετηρίων ανοιχτού κώδικα για ευάλωτα στοιχεία
+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, Yum, Helm, Docker, CocoaPods, Git LFS
-
+ Hex, RubyGems, Maven, NPM, Nuget, Pypi
Διαθεσιμότητα εξειδικευμένης ερευνητικής ομάδας
+
-
-
Λειτουργία κλειστού βρόχου
+
+
+
Χρήση βάσεων δεδομένων τρίτων
+ Κλειστή βάση δεδομένων Sonatype
+ Sonatype OSS, NPM Public Advisors
+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, υποστήριξη για τη δική του βάση δεδομένων ευπάθειας
Δυνατότητα φιλτραρίσματος στοιχείων ανοιχτού κώδικα κατά την προσπάθεια φόρτωσης στον βρόχο ανάπτυξης σύμφωνα με διαμορφωμένες πολιτικές
+
-
-
Προτάσεις για τη διόρθωση ευπαθειών, διαθεσιμότητα συνδέσμων για επιδιορθώσεις
+
+- (εξαρτάται από την περιγραφή σε δημόσιες βάσεις δεδομένων)
+- (εξαρτάται από την περιγραφή σε δημόσιες βάσεις δεδομένων)
Κατάταξη των ανιχνευόμενων τρωτών σημείων κατά σοβαρότητα
+
+
+
Μοντέλο πρόσβασης βάσει ρόλων
+
-
+
Υποστήριξη CLI
+
+
+- (μόνο για CycloneDX)
Δειγματοληψία/ταξινόμηση τρωτών σημείων σύμφωνα με καθορισμένα κριτήρια
+
-
+
Πίνακας ελέγχου κατά κατάσταση εφαρμογής
+
-
+
Δημιουργία αναφορών σε μορφή PDF
+
-
-
Δημιουργία αναφορών σε μορφή JSONCSV
+
+
-
Υποστήριξη ρωσικής γλώσσας
-
-
-
Δυνατότητες ολοκλήρωσης
ολοκλήρωση
Nexus IQ
Έλεγχος εξάρτησης
Κομμάτι εξάρτησης
Ενσωμάτωση LDAP/Active Directory
+
-
+
Ενσωμάτωση με το σύστημα συνεχούς ενοποίησης Bamboo
+
-
-
Ενοποίηση με το σύστημα συνεχούς ολοκλήρωσης TeamCity
+
-
-
Ενοποίηση με σύστημα συνεχούς ενοποίησης GitLab
+
+- (ως πρόσθετο για το GitLab)
+
Ενσωμάτωση με σύστημα συνεχούς ολοκλήρωσης Jenkins
+
+
+
Διαθεσιμότητα πρόσθετων για IDE
+ IntelliJ, Eclipse, Visual Studio
-
-
Υποστήριξη προσαρμοσμένης ενσωμάτωσης μέσω διαδικτυακών υπηρεσιών (API) του εργαλείου
+
-
+
Έλεγχος εξάρτησης
Πρώτη αρχή
Ας εκτελέσουμε τον Έλεγχο εξάρτησης σε μια εσκεμμένα ευάλωτη εφαρμογή .
Για αυτό θα χρησιμοποιήσουμε :
mvn org.owasp:dependency-check-maven:checkΩς αποτέλεσμα, το dependency-check-report.html θα εμφανιστεί στον κατάλογο προορισμού.

Ας ανοίξουμε το αρχείο. Μετά από συνοπτικές πληροφορίες σχετικά με τον συνολικό αριθμό των τρωτών σημείων, μπορούμε να δούμε πληροφορίες σχετικά με τρωτά σημεία με υψηλό επίπεδο σοβαρότητας και εμπιστοσύνης, υποδεικνύοντας το πακέτο, το CPE και τον αριθμό των CVE.
Στη συνέχεια έρχονται πιο λεπτομερείς πληροφορίες, ιδίως η βάση στην οποία ελήφθη η απόφαση (αποδεικτικά στοιχεία), δηλαδή ένα συγκεκριμένο BOM.

Στη συνέχεια ακολουθεί η περιγραφή CPE, PURL και CVE. Παρεμπιπτόντως, οι συστάσεις για διόρθωση δεν περιλαμβάνονται λόγω της απουσίας τους στη βάση δεδομένων NVD.

Για να προβάλλετε συστηματικά τα αποτελέσματα σάρωσης, μπορείτε να διαμορφώσετε το Nginx με ελάχιστες ρυθμίσεις ή να στείλετε τα ελαττώματα που προκύπτουν σε ένα σύστημα διαχείρισης ελαττωμάτων που υποστηρίζει συνδέσμους στον Έλεγχο εξάρτησης. Για παράδειγμα, Defect Dojo.
Κομμάτι εξάρτησης
Εγκατάσταση
Το Dependency Track, με τη σειρά του, είναι μια πλατφόρμα που βασίζεται στον ιστό με γραφήματα εμφάνισης, επομένως το πιεστικό ζήτημα της αποθήκευσης ελαττωμάτων σε μια λύση τρίτου κατασκευαστή δεν προκύπτει εδώ.
Τα υποστηριζόμενα σενάρια για εγκατάσταση είναι: Docker, WAR, Executable WAR.
Πρώτη αρχή
Πηγαίνουμε στη διεύθυνση URL της υπηρεσίας που εκτελείται. Συνδεόμαστε μέσω διαχειριστή/διαχειριστή, αλλάζουμε τα στοιχεία σύνδεσης και τον κωδικό πρόσβασης και μετά φτάνουμε στον Πίνακα ελέγχου. Το επόμενο πράγμα που θα κάνουμε είναι να δημιουργήσουμε ένα έργο για μια δοκιμαστική εφαρμογή σε Java in Αρχική σελίδα/Έργα → Δημιουργία έργου . Ας πάρουμε το DVJA ως παράδειγμα.

Εφόσον το Dependency Track μπορεί να δέχεται μόνο BOM ως είσοδο, αυτό το BOM πρέπει να ανακτηθεί. Ας εκμεταλλευτούμε :
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBomΠαίρνουμε το bom.xml και φορτώνουμε το αρχείο στο έργο που δημιουργήθηκε DVJA → Εξαρτήσεις → Μεταφόρτωση BOM.
Ας πάμε στο Administration → Analyzers. Κατανοούμε ότι έχουμε ενεργοποιημένο μόνο τον Εσωτερικό Αναλυτή, ο οποίος περιλαμβάνει το NVD. Ας συνδέσουμε επίσης το Sonatype OSS Index.

Έτσι, παίρνουμε την παρακάτω εικόνα για το έργο μας:

Επίσης στη λίστα μπορείτε να βρείτε ένα θέμα ευπάθειας που ισχύει για το Sonatype OSS:

Η κύρια απογοήτευση ήταν ότι το Dependency Track δεν δέχεται πλέον αναφορές xml Έλεγχος εξάρτησης. Οι πιο πρόσφατες υποστηριζόμενες εκδόσεις της ενοποίησης του Έλεγχου εξάρτησης ήταν 1.0.0 - 4.0.2, ενώ δοκίμασα την 5.3.2.
Εδώ (και ) όταν ήταν ακόμα δυνατό.
Nexus IQ
Πρώτη αρχή
Η εγκατάσταση του Nexus IQ προέρχεται από τα αρχεία του , αλλά δημιουργήσαμε μια εικόνα Docker για αυτούς τους σκοπούς.
Αφού συνδεθείτε στην κονσόλα, πρέπει να δημιουργήσετε έναν οργανισμό και μια εφαρμογή.



Όπως μπορείτε να δείτε, η ρύθμιση στην περίπτωση του IQ είναι κάπως πιο περίπλοκη, επειδή πρέπει επίσης να δημιουργήσουμε πολιτικές που να ισχύουν για διαφορετικά «στάδια» (dev, build, stage, release). Αυτό είναι απαραίτητο για τον αποκλεισμό ευάλωτων στοιχείων καθώς κινούνται μέσω του αγωγού πιο κοντά στην παραγωγή ή για να τα μπλοκάρετε αμέσως μόλις εισέλθουν στο Nexus Repo όταν τα κατεβάσουν οι προγραμματιστές.
Για να νιώσετε τη διαφορά μεταξύ ανοιχτού κώδικα και επιχείρησης, ας εκτελέσουμε την ίδια σάρωση μέσω του Nexus IQ με τον ίδιο τρόπο μέσω , έχοντας προηγουμένως δημιουργήσει μια δοκιμαστική εφαρμογή στη διεπαφή NexusIQ dvja-test-and-compare:
mvn com.sonatype.clm:clm-maven-plugin:evaluate -Dclm.applicationId=dvja-test-and-compare -Dclm.serverUrl=<NEXUSIQIP> -Dclm.username=<USERNAME> -Dclm.password=<PASSWORD>
Ακολουθήστε τη διεύθυνση URL της αναφοράς που δημιουργήθηκε στη διεπαφή ιστού IQ:

Εδώ μπορείτε να δείτε όλες τις παραβιάσεις πολιτικής που υποδεικνύουν διαφορετικά επίπεδα σημασίας (από Πληροφορίες έως Κρίσιμη ασφάλεια). Το γράμμα D δίπλα σε ένα στοιχείο σημαίνει ότι το στοιχείο είναι Άμεση Εξάρτηση και το γράμμα Τ δίπλα στο στοιχείο σημαίνει ότι το στοιχείο είναι Μεταβατική Εξάρτηση, δηλαδή είναι μεταβατικό.
Παρεμπιπτόντως, η έκθεση από την Snyk αναφέρει ότι πάνω από το 70% των ευπάθειας ανοιχτού κώδικα που ανακαλύφθηκαν στο Node.js, Java και Ruby βρίσκονται σε μεταβατικές εξαρτήσεις.
Εάν ανοίξουμε μία από τις παραβιάσεις της πολιτικής Nexus IQ, μπορούμε να δούμε μια περιγραφή του στοιχείου, καθώς και ένα γράφημα έκδοσης, το οποίο δείχνει τη θέση της τρέχουσας έκδοσης στο γράφημα χρόνου, καθώς και σε ποιο σημείο η ευπάθεια παύει να να είναι ευάλωτος. Το ύψος των κεριών στο γράφημα δείχνει τη δημοτικότητα της χρήσης αυτού του στοιχείου.

Εάν μεταβείτε στην ενότητα ευπάθειες και επεκτείνετε το CVE, μπορείτε να διαβάσετε μια περιγραφή αυτής της ευπάθειας, συστάσεις για εξάλειψη, καθώς και τον λόγο για τον οποίο παραβιάστηκε αυτό το στοιχείο, δηλαδή την παρουσία της κλάσης DiskFileitem.class.


Ας συνοψίσουμε μόνο εκείνα που σχετίζονται με στοιχεία Java τρίτων, αφαιρώντας τα στοιχεία js. Σε παρένθεση υποδεικνύουμε τον αριθμό των τρωτών σημείων που βρέθηκαν εκτός του NVD.
Συνολικό Nexus IQ:
- Εξαρτήσεις που σαρώθηκαν: 62
- Ευάλωτες Εξαρτήσεις: 16
- Βρέθηκαν ευπάθειες: 42 (8 sonatype db)
Έλεγχος συνολικής εξάρτησης:
- Εξαρτήσεις που σαρώθηκαν: 47
- Ευάλωτες Εξαρτήσεις: 13
- Βρέθηκαν ευπάθειες: 91 (14 sonatype oss)
Συνολική διαδρομή εξάρτησης:
- Εξαρτήσεις που σαρώθηκαν: 59
- Ευάλωτες Εξαρτήσεις: 10
- Βρέθηκαν ευπάθειες: 51 (1 sonatype oss)
Στα επόμενα βήματα, θα αναλύσουμε τα αποτελέσματα που προέκυψαν και θα καταλάβουμε ποια από αυτά τα τρωτά σημεία είναι πραγματικό ελάττωμα και ποια είναι ψευδώς θετική.
Αποποίηση ευθυνών
Αυτή η κριτική δεν είναι μια αδιαμφισβήτητη αλήθεια. Ο συγγραφέας δεν είχε στόχο να αναδείξει ένα ξεχωριστό όργανο με φόντο άλλα. Το θέμα της ανασκόπησης ήταν να δείξει τους μηχανισμούς λειτουργίας των εργαλείων SCA και τρόπους ελέγχου των αποτελεσμάτων τους.
Σύγκριση αποτελεσμάτων
Όροι και προϋποθέσεις:
Ένα ψευδώς θετικό για ευπάθειες στοιχείων τρίτων είναι:
- Αναντιστοιχία CVE με αναγνωρισμένο στοιχείο
- Για παράδειγμα, εάν εντοπιστεί μια ευπάθεια στο πλαίσιο struts2 και το εργαλείο δείχνει σε ένα στοιχείο του πλαισίου struts-tiles, στο οποίο αυτή η ευπάθεια δεν ισχύει, τότε αυτό είναι ψευδώς θετικό
- Αναντιστοιχία CVE με την αναγνωρισμένη έκδοση του στοιχείου
- Για παράδειγμα, η ευπάθεια συνδέεται με την έκδοση python > 3.5 και το εργαλείο επισημαίνει την έκδοση 2.7 ως ευάλωτη - αυτό είναι ψευδώς θετικό, καθώς στην πραγματικότητα η ευπάθεια ισχύει μόνο για τον κλάδο προϊόντων 3.x
- Διπλότυπο CVE
- Για παράδειγμα, εάν το SCA καθορίζει ένα CVE που ενεργοποιεί ένα RCE, τότε το SCA καθορίζει ένα CVE για το ίδιο στοιχείο που ισχύει για προϊόντα Cisco που επηρεάζονται από αυτό το RCE. Σε αυτή την περίπτωση θα είναι ψευδώς θετικό.
- Για παράδειγμα, βρέθηκε ένα CVE σε ένα στοιχείο spring-web, μετά το οποίο το SCA δείχνει το ίδιο CVE σε άλλα στοιχεία του Spring Framework, ενώ το CVE δεν έχει καμία σχέση με άλλα στοιχεία. Σε αυτή την περίπτωση θα είναι ψευδώς θετικό.
Αντικείμενο της μελέτης ήταν το έργο ανοιχτού κώδικα DVJA. Η μελέτη αφορούσε μόνο στοιχεία java (χωρίς js).
Συνοπτικά αποτελέσματα
Ας πάμε κατευθείαν στα αποτελέσματα μιας μη αυτόματης αναθεώρησης των εντοπισμένων τρωτών σημείων. Η πλήρης αναφορά για κάθε CVE βρίσκεται στο Παράρτημα.
Συνοπτικά αποτελέσματα για όλα τα τρωτά σημεία:
Παράμετρος
Nexus IQ
Έλεγχος εξάρτησης
Κομμάτι εξάρτησης
Εντοπίστηκαν συνολικά τρωτά σημεία
42
91
51
Εσφαλμένα εντοπισμένα τρωτά σημεία (ψευδώς θετικά)
2 (4.76%)
62 (68,13%)
29 (56.86%)
Δεν βρέθηκαν σχετικές ευπάθειες (ψευδώς αρνητικό)
10
20
27
Συνοπτικά αποτελέσματα ανά στοιχείο:
Παράμετρος
Nexus IQ
Έλεγχος εξάρτησης
Κομμάτι εξάρτησης
Συνολικά στοιχεία που προσδιορίστηκαν
62
47
59
Συνολικά ευάλωτα στοιχεία
16
13
10
Εσφαλμένα προσδιορισμένα ευάλωτα στοιχεία (ψευδώς θετικά)
1
5
0
Εσφαλμένα προσδιορισμένα ευάλωτα στοιχεία (ψευδώς θετικά)
0
6
6
Ας δημιουργήσουμε οπτικά γραφήματα για να αξιολογήσουμε την αναλογία ψευδώς θετικών και ψευδώς αρνητικών προς τον συνολικό αριθμό των τρωτών σημείων. Τα στοιχεία επισημαίνονται οριζόντια και τα τρωτά σημεία που εντοπίζονται σε αυτά επισημαίνονται κάθετα.



Για σύγκριση, μια παρόμοια μελέτη διεξήχθη από την ομάδα Sonatype δοκιμάζοντας ένα έργο 1531 στοιχείων χρησιμοποιώντας Έλεγχο εξάρτησης OWASP. Όπως μπορούμε να δούμε, η αναλογία θορύβου προς σωστές αποκρίσεις είναι συγκρίσιμη με τα αποτελέσματά μας.

Πηγή:
Ας δούμε μερικά από τα CVE από τα αποτελέσματα σάρωσης για να κατανοήσουμε τον λόγο για αυτά τα αποτελέσματα.
Περισσότερα
№ 1
Ας δούμε πρώτα μερικά ενδιαφέροντα σημεία σχετικά με το Sonatype Nexus IQ.
Το Nexus IQ επισημαίνει ένα πρόβλημα με την αποσειροποίηση με τη δυνατότητα εκτέλεσης RCE στο Spring Framework πολλές φορές. CVE-2016-1000027 σε spring-web:3.0.5 πρώτη φορά και CVE-2011-2894 σε spring-context:3.0.5 και spring-core:3.0.5. Αρχικά, φαίνεται ότι υπάρχει διπλή ευπάθεια σε πολλά CVE. Επειδή, αν κοιτάξετε τα CVE-2016-1000027 και CVE-2011-2894 στη βάση δεδομένων NVD, φαίνεται ότι όλα είναι προφανή
Στοιχείο
Τρωτό
άνοιξη-ιστός:3.0.5
CVE-2016-1000027
Spring-context:3.0.5
CVE-2011-2894
ελατηριωτός πυρήνας: 3.0.5
CVE-2011-2894
Περιγραφή από NVD:

Περιγραφή από NVD:

Το ίδιο το CVE-2011-2894 είναι αρκετά διάσημο. Στην έκθεση αυτό το CVE αναγνωρίστηκε ως ένα από τα πιο κοινά. Οι περιγραφές για το CVE-2016-100027, καταρχήν, δεν είναι πολλές στο NVD, και φαίνεται να είναι εφαρμόσιμες μόνο για το Spring Framework 4.1.4. Ας ρίξουμε μια ματιά στο και εδώ όλα γίνονται λίγο πολύ ξεκάθαρα. Από Καταλαβαίνουμε ότι εκτός από την ευπάθεια σε RemoteInvocationSerializingExporter στο CVE-2011-2894, η ευπάθεια παρατηρείται σε HttpInvokerServiceExporter. Αυτό μας λέει το Nexus IQ:

Ωστόσο, δεν υπάρχει κάτι παρόμοιο στο NVD, γι' αυτό και ο Έλεγχος εξάρτησης και ο Έλεγχος εξάρτησης λαμβάνουν ψευδώς αρνητικά.
Επίσης από την περιγραφή του CVE-2011-2894 μπορεί να γίνει κατανοητό ότι η ευπάθεια είναι πράγματι παρούσα τόσο στο spring-context:3.0.5 όσο και στο spring-core:3.0.5. Η επιβεβαίωση αυτού μπορεί να βρεθεί σε ένα άρθρο από το άτομο που βρήκε αυτήν την ευπάθεια.
№ 2
Στοιχείο
Τρωτό
Αποτέλεσμα
αντηρίδες 2-πυρήνα:2.3.30
CVE-2016-4003
ΨΕΥΔΗΣ
Αν μελετήσουμε την ευπάθεια CVE-2016-4003, θα καταλάβουμε ότι διορθώθηκε στην έκδοση 2.3.28, ωστόσο, το Nexus IQ μας το αναφέρει. Υπάρχει μια σημείωση στην περιγραφή της ευπάθειας:

Δηλαδή, η ευπάθεια υπάρχει μόνο σε συνδυασμό με μια ξεπερασμένη έκδοση του JRE, για την οποία αποφάσισαν να μας προειδοποιήσουν. Ωστόσο, θεωρούμε αυτό το ψευδώς θετικό, αν και όχι το χειρότερο.
Όχι. 3
Στοιχείο
Τρωτό
Αποτέλεσμα
xwork-core: 2.3.30
CVE-2017-9804
ΑΛΗΘΙΝΗ
xwork-core: 2.3.30
CVE-2017-7672
ΨΕΥΔΗΣ
Αν δούμε τις περιγραφές των CVE-2017-9804 και CVE-2017-7672, θα καταλάβουμε ότι το πρόβλημα είναι URLValidator class, με το CVE-2017-9804 που προέρχεται από το CVE-2017-7672. Η παρουσία της δεύτερης ευπάθειας δεν φέρει κανένα χρήσιμο φορτίο εκτός από το γεγονός ότι η σοβαρότητά της έχει αυξηθεί σε High, οπότε μπορούμε να τη θεωρήσουμε περιττό θόρυβο.
Γενικά, δεν βρέθηκαν άλλα ψευδώς θετικά στοιχεία για το Nexus IQ.
№ 4
Υπάρχουν πολλά πράγματα που κάνουν το IQ να ξεχωρίζει από άλλες λύσεις.
Στοιχείο
Τρωτό
Αποτέλεσμα
άνοιξη-ιστός:3.0.5
CVE-2020-5398
ΑΛΗΘΙΝΗ
Το CVE στο NVD δηλώνει ότι ισχύει μόνο για τις εκδόσεις 5.2.x πριν από 5.2.3, 5.1.x πριν από 5.1.13 και εκδόσεις 5.0.x πριν από 5.0.16, ωστόσο, αν δούμε την περιγραφή CVE στο Nexus IQ , τότε θα δούμε τα εξής:
Συμβουλευτική σημείωση για την απόκλιση: Η ερευνητική ομάδα ασφαλείας της Sonatype ανακάλυψε ότι αυτή η ευπάθεια εισήχθη στην έκδοση 3.0.2.RELEASE και όχι στην έκδοση 5.0.x, όπως αναφέρεται στη συμβουλευτική.
Ακολουθεί ένα PoC για αυτό το θέμα ευπάθειας, το οποίο δηλώνει ότι υπάρχει στην έκδοση 3.0.5.
Το ψευδώς αρνητικό αποστέλλεται στον Έλεγχο εξάρτησης και στο ίχνος εξάρτησης.
№ 5
Ας δούμε τα ψευδώς θετικά για τον Έλεγχο εξάρτησης και την Παρακολούθηση Εξάρτησης.
Ο Έλεγχος εξάρτησης ξεχωρίζει στο ότι αντικατοπτρίζει εκείνα τα CVE που ισχύουν για ολόκληρο το πλαίσιο στο NVD σε εκείνα τα στοιχεία στα οποία δεν ισχύουν αυτά τα CVE. Αυτό αφορά τους ελέγχους CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, οι οποίοι εξαρτώνται από ” σε struts-taglib:1.3.8 και struts-tiles-1.3.8. Αυτά τα στοιχεία δεν έχουν καμία σχέση με αυτό που περιγράφεται στο CVE - επεξεργασία αιτημάτων, επικύρωση σελίδας και ούτω καθεξής. Αυτό οφείλεται στο γεγονός ότι το κοινό που έχουν αυτά τα CVE και τα στοιχεία είναι μόνο το πλαίσιο, γι' αυτό και ο Έλεγχος εξάρτησης το θεώρησε ευπάθεια.
Η ίδια κατάσταση είναι με το spring-tx:3.0.5 και παρόμοια κατάσταση με τα struts-core:1.3.8. Για το struts-core, το Dependency Check και το Dependency Track έχουν βρει πολλά τρωτά σημεία που ισχύουν στην πραγματικότητα για το struts2-core, το οποίο είναι ουσιαστικά ένα ξεχωριστό πλαίσιο. Σε αυτήν την περίπτωση, το Nexus IQ κατάλαβε σωστά την εικόνα και στα CVE που εξέδωσε, έδειχνε ότι ο πυρήνας των αντηρίδων είχε φτάσει στο τέλος της ζωής του και ότι ήταν απαραίτητο να μετακινηθεί στο struts2-core.
№ 6
Σε ορισμένες περιπτώσεις, είναι άδικο να ερμηνεύσουμε ένα προφανές σφάλμα ελέγχου εξάρτησης και ίχνους εξάρτησης. Ειδικότερα, CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225 Έλεγχος και Το Dependency Track που αποδίδεται στο spring-core:3.0.5 ανήκει στην πραγματικότητα στο spring-web:3.0.5. Ταυτόχρονα, ορισμένα από αυτά τα CVE βρέθηκαν επίσης από το Nexus IQ, ωστόσο, το IQ τα αναγνώρισε σωστά σε ένα άλλο στοιχείο. Επειδή αυτά τα τρωτά σημεία δεν βρέθηκαν στον πυρήνα του άνοιξης, δεν μπορεί να υποστηριχθεί ότι δεν είναι στο πλαίσιο κατ' αρχήν και τα εργαλεία ανοιχτού κώδικα επισήμαναν σωστά αυτά τα τρωτά σημεία (απλώς έχασαν λίγο).
Ευρήματα
Όπως μπορούμε να δούμε, ο προσδιορισμός της αξιοπιστίας των εντοπισμένων τρωτών σημείων με μη αυτόματο έλεγχο δεν δίνει σαφή αποτελέσματα, γι' αυτό και ανακύπτουν αμφιλεγόμενα ζητήματα. Τα αποτελέσματα είναι ότι η λύση Nexus IQ έχει το χαμηλότερο ποσοστό ψευδώς θετικών και την υψηλότερη ακρίβεια.
Πρώτα απ 'όλα, αυτό οφείλεται στο γεγονός ότι η ομάδα της Sonatype επέκτεινε την περιγραφή για κάθε ευπάθεια CVE από το NVD στις βάσεις δεδομένων της, υποδεικνύοντας τα τρωτά σημεία για μια συγκεκριμένη έκδοση των στοιχείων μέχρι την κλάση ή τη συνάρτηση, πραγματοποιώντας πρόσθετη έρευνα (για παράδειγμα , ελέγχοντας τα τρωτά σημεία σε παλαιότερες εκδόσεις λογισμικού).
Σημαντική επιρροή στα αποτελέσματα παίζουν επίσης εκείνα τα τρωτά σημεία που δεν συμπεριλήφθηκαν στο NVD, αλλά παρόλα αυτά υπάρχουν στη βάση δεδομένων Sonatype με το σήμα SONATYPE. Σύμφωνα με την έκθεση Το 45% των ευπαθειών ανοιχτού κώδικα που ανακαλύφθηκαν δεν αναφέρονται στην NVD. Σύμφωνα με τη βάση δεδομένων WhiteSource, μόνο το 29% όλων των τρωτών σημείων ανοιχτού κώδικα που αναφέρονται εκτός της NVD καταλήγουν να δημοσιεύονται εκεί, γι' αυτό είναι σημαντικό να αναζητήσετε ευπάθειες και σε άλλες πηγές.
Ως αποτέλεσμα, ο Έλεγχος εξάρτησης παράγει πολύ θόρυβο, χάνοντας ορισμένα ευάλωτα στοιχεία. Το Dependency Track παράγει λιγότερο θόρυβο και ανιχνεύει μεγάλο αριθμό στοιχείων, κάτι που δεν βλάπτει οπτικά τα μάτια στη διεπαφή ιστού.
Ωστόσο, η πρακτική δείχνει ότι ο ανοιχτός κώδικας πρέπει να γίνει τα πρώτα βήματα προς τα ώριμα DevSecOps. Το πρώτο πράγμα που πρέπει να σκεφτείτε κατά την ενσωμάτωση της SCA στην ανάπτυξη είναι οι διαδικασίες, δηλαδή, να σκεφτείτε μαζί με τη διοίκηση και τα σχετικά τμήματα σχετικά με το πώς πρέπει να μοιάζουν οι ιδανικές διαδικασίες στον οργανισμό σας. Μπορεί να αποδειχτεί ότι για τον οργανισμό σας, αρχικά, ο Έλεγχος εξάρτησης ή το Παρακολούθηση Εξάρτησης θα καλύψει όλες τις επιχειρηματικές ανάγκες και οι λύσεις Enterprise θα είναι μια λογική συνέχεια λόγω της αυξανόμενης πολυπλοκότητας των εφαρμογών που αναπτύσσονται.
Παράρτημα Α: Αποτελέσματα συνιστωσών
Σύμβολα:
- Ευπάθειες υψηλού-υψηλού και κρίσιμου επιπέδου στο στοιχείο
- Μεσαίο — Τρωτά σημεία μεσαίου επιπέδου κρισιμότητας στο εξάρτημα
- ΑΛΗΘΕΙΑ — Αληθινό θετικό ζήτημα
- FALSE — Λάθος θετικό ζήτημα
Στοιχείο
Nexus IQ
Έλεγχος εξάρτησης
Κομμάτι εξάρτησης
Αποτέλεσμα
dom4j: 1.6.1
Ψηλά
Ψηλά
Ψηλά
ΑΛΗΘΙΝΗ
log4j-core: 2.3
Ψηλά
Ψηλά
Ψηλά
ΑΛΗΘΙΝΗ
log4j: 1.2.14
Ψηλά
Ψηλά
-
ΑΛΗΘΙΝΗ
κοινά-συλλογές:3.1
Ψηλά
Ψηλά
Ψηλά
ΑΛΗΘΙΝΗ
Commons-Fileupload:1.3.2
Ψηλά
Ψηλά
Ψηλά
ΑΛΗΘΙΝΗ
Commons-Beanutils:1.7.0
Ψηλά
Ψηλά
Ψηλά
ΑΛΗΘΙΝΗ
Commons-codec:1:10
Μέτριας Δυσκολίας
-
-
ΑΛΗΘΙΝΗ
mysql-connector-java:5.1.42
Ψηλά
Ψηλά
Ψηλά
ΑΛΗΘΙΝΗ
ελατήριο-έκφραση:3.0.5
Ψηλά
συστατικό δεν βρέθηκε
ΑΛΗΘΙΝΗ
άνοιξη-ιστός:3.0.5
Ψηλά
συστατικό δεν βρέθηκε
Ψηλά
ΑΛΗΘΙΝΗ
Spring-context:3.0.5
Μέτριας Δυσκολίας
συστατικό δεν βρέθηκε
-
ΑΛΗΘΙΝΗ
ελατηριωτός πυρήνας: 3.0.5
Μέτριας Δυσκολίας
Ψηλά
Ψηλά
ΑΛΗΘΙΝΗ
struts2-config-browser-plugin:2.3.30
Μέτριας Δυσκολίας
-
-
ΑΛΗΘΙΝΗ
ελατήριο-tx:3.0.5
-
Ψηλά
-
ΨΕΥΔΗΣ
αντηρίδες-πυρήνας:1.3.8
Ψηλά
Ψηλά
Ψηλά
ΑΛΗΘΙΝΗ
xwork-core: 2.3.30
Ψηλά
-
-
ΑΛΗΘΙΝΗ
struts2-core: 2.3.30
Ψηλά
Ψηλά
Ψηλά
ΑΛΗΘΙΝΗ
struts-taglib:1.3.8
-
Ψηλά
-
ΨΕΥΔΗΣ
αντηρίδες-πλακίδια-1.3.8
-
Ψηλά
-
ΨΕΥΔΗΣ
Παράρτημα Β: Αποτελέσματα ευπάθειας
Σύμβολα:
- Ευπάθειες υψηλού-υψηλού και κρίσιμου επιπέδου στο στοιχείο
- Μεσαίο — Τρωτά σημεία μεσαίου επιπέδου κρισιμότητας στο εξάρτημα
- ΑΛΗΘΕΙΑ — Αληθινό θετικό ζήτημα
- FALSE — Λάθος θετικό ζήτημα
Στοιχείο
Nexus IQ
Έλεγχος εξάρτησης
Κομμάτι εξάρτησης
Δριμύτητα
Αποτέλεσμα
Σχόλιο
dom4j: 1.6.1
CVE-2018-1000632
CVE-2018-1000632
CVE-2018-1000632
Ψηλά
ΑΛΗΘΙΝΗ
CVE-2020-10683
CVE-2020-10683
CVE-2020-10683
Ψηλά
ΑΛΗΘΙΝΗ
log4j-core: 2.3
CVE-2017-5645
CVE-2017-5645
CVE-2017-5645
Ψηλά
ΑΛΗΘΙΝΗ
CVE-2020-9488
CVE-2020-9488
CVE-2020-9488
Χαμηλός
ΑΛΗΘΙΝΗ
log4j: 1.2.14
CVE-2019-17571
CVE-2019-17571
-
Ψηλά
ΑΛΗΘΙΝΗ
-
CVE-2020-9488
-
Χαμηλός
ΑΛΗΘΙΝΗ
SONATYPE-2010-0053
-
-
Ψηλά
ΑΛΗΘΙΝΗ
κοινά-συλλογές:3.1
-
CVE-2015-6420
CVE-2015-6420
Ψηλά
ΨΕΥΔΗΣ
Διπλότυπα RCE(OSSINDEX)
-
CVE-2017-15708
CVE-2017-15708
Ψηλά
ΨΕΥΔΗΣ
Διπλότυπα RCE(OSSINDEX)
SONATYPE-2015-0002
RCE (OSSINDEX)
RCE(OSSINDEX)
Ψηλά
ΑΛΗΘΙΝΗ
Commons-Fileupload:1.3.2
CVE-2016-1000031
CVE-2016-1000031
CVE-2016-1000031
Ψηλά
ΑΛΗΘΙΝΗ
SONATYPE-2014-0173
-
-
Μέτριας Δυσκολίας
ΑΛΗΘΙΝΗ
Commons-Beanutils:1.7.0
CVE-2014-0114
CVE-2014-0114
CVE-2014-0114
Ψηλά
ΑΛΗΘΙΝΗ
-
CVE-2019-10086
CVE-2019-10086
Ψηλά
ΨΕΥΔΗΣ
Η ευπάθεια ισχύει μόνο για τις εκδόσεις 1.9.2+
Commons-codec:1:10
SONATYPE-2012-0050
-
-
Μέτριας Δυσκολίας
ΑΛΗΘΙΝΗ
mysql-connector-java:5.1.42
CVE-2018-3258
CVE-2018-3258
CVE-2018-3258
Ψηλά
ΑΛΗΘΙΝΗ
CVE-2019-2692
CVE-2019-2692
-
Μέτριας Δυσκολίας
ΑΛΗΘΙΝΗ
-
CVE-2020-2875
-
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Η ίδια ευπάθεια με το CVE-2019-2692, αλλά με τη σημείωση "οι επιθέσεις μπορεί να επηρεάσουν σημαντικά πρόσθετα προϊόντα"
-
CVE-2017-15945
-
Ψηλά
ΨΕΥΔΗΣ
Δεν σχετίζεται με το mysql-connector-java
-
CVE-2020-2933
-
Χαμηλός
ΨΕΥΔΗΣ
Διπλότυπο του CVE-2020-2934
CVE-2020-2934
CVE-2020-2934
-
Μέτριας Δυσκολίας
ΑΛΗΘΙΝΗ
ελατήριο-έκφραση:3.0.5
CVE-2018-1270
συστατικό δεν βρέθηκε
-
Ψηλά
ΑΛΗΘΙΝΗ
CVE-2018-1257
-
-
Μέτριας Δυσκολίας
ΑΛΗΘΙΝΗ
άνοιξη-ιστός:3.0.5
CVE-2016-1000027
συστατικό δεν βρέθηκε
-
Ψηλά
ΑΛΗΘΙΝΗ
CVE-2014-0225
-
CVE-2014-0225
Ψηλά
ΑΛΗΘΙΝΗ
CVE-2011-2730
-
-
Ψηλά
ΑΛΗΘΙΝΗ
-
-
CVE-2013-4152
Μέτριας Δυσκολίας
ΑΛΗΘΙΝΗ
CVE-2018-1272
-
-
Ψηλά
ΑΛΗΘΙΝΗ
CVE-2020-5398
-
-
Ψηλά
ΑΛΗΘΙΝΗ
Ένα ενδεικτικό παράδειγμα υπέρ του IQ: «Η ερευνητική ομάδα ασφαλείας της Sonatype ανακάλυψε ότι αυτή η ευπάθεια εισήχθη στην έκδοση 3.0.2.RELEASE και όχι στην έκδοση 5.0.x, όπως αναφέρεται στη συμβουλευτική».
CVE-2013-6429
-
-
Μέτριας Δυσκολίας
ΑΛΗΘΙΝΗ
CVE-2014-0054
-
CVE-2014-0054
Μέτριας Δυσκολίας
ΑΛΗΘΙΝΗ
CVE-2013-6430
-
-
Μέτριας Δυσκολίας
ΑΛΗΘΙΝΗ
Spring-context:3.0.5
CVE-2011-2894
συστατικό δεν βρέθηκε
-
Μέτριας Δυσκολίας
ΑΛΗΘΙΝΗ
ελατηριωτός πυρήνας: 3.0.5
-
CVE-2011-2730
CVE-2011-2730
Ψηλά
ΑΛΗΘΙΝΗ
CVE-2011-2894
CVE-2011-2894
CVE-2011-2894
Μέτριας Δυσκολίας
ΑΛΗΘΙΝΗ
-
-
CVE-2013-4152
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Διπλότυπο της ίδιας ευπάθειας στο spring-web
-
CVE-2013-4152
-
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Η ευπάθεια σχετίζεται με το στοιχείο spring-web
-
CVE-2013-6429
CVE-2013-6429
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Η ευπάθεια σχετίζεται με το στοιχείο spring-web
-
CVE-2013-6430
-
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Η ευπάθεια σχετίζεται με το στοιχείο spring-web
-
CVE-2013-7315
CVE-2013-7315
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
SPLIT από CVE-2013-4152. + Η ευπάθεια σχετίζεται με το στοιχείο spring-web
-
CVE-2014-0054
CVE-2014-0054
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Η ευπάθεια σχετίζεται με το στοιχείο spring-web
-
CVE-2014-0225
-
Ψηλά
ΨΕΥΔΗΣ
Η ευπάθεια σχετίζεται με το στοιχείο spring-web
-
-
CVE-2014-0225
Ψηλά
ΨΕΥΔΗΣ
Διπλότυπο της ίδιας ευπάθειας στο spring-web
-
CVE-2014-1904
CVE-2014-1904
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Η ευπάθεια σχετίζεται με το στοιχείο spring-web-mvc
-
CVE-2014-3625
CVE-2014-3625
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Η ευπάθεια σχετίζεται με το στοιχείο spring-web-mvc
-
CVE-2016-9878
CVE-2016-9878
Ψηλά
ΨΕΥΔΗΣ
Η ευπάθεια σχετίζεται με το στοιχείο spring-web-mvc
-
CVE-2018-1270
CVE-2018-1270
Ψηλά
ΨΕΥΔΗΣ
Για άνοιξη-έκφραση/άνοιξη-μηνύματα
-
CVE-2018-1271
CVE-2018-1271
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Η ευπάθεια σχετίζεται με το στοιχείο spring-web-mvc
-
CVE-2018-1272
CVE-2018-1272
Ψηλά
ΑΛΗΘΙΝΗ
CVE-2014-3578
CVE-2014-3578 (OSSINDEX)
CVE-2014-3578
Μέτριας Δυσκολίας
ΑΛΗΘΙΝΗ
SONATYPE-2015-0327
-
-
Χαμηλός
ΑΛΗΘΙΝΗ
struts2-config-browser-plugin:2.3.30
SONATYPE-2016-0104
-
-
Μέτριας Δυσκολίας
ΑΛΗΘΙΝΗ
ελατήριο-tx:3.0.5
-
CVE-2011-2730
-
Ψηλά
ΨΕΥΔΗΣ
Η ευπάθεια δεν είναι συγκεκριμένη για το spring-tx
-
CVE-2011-2894
-
Ψηλά
ΨΕΥΔΗΣ
Η ευπάθεια δεν είναι συγκεκριμένη για το spring-tx
-
CVE-2013-4152
-
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Η ευπάθεια δεν είναι συγκεκριμένη για το spring-tx
-
CVE-2013-6429
-
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Η ευπάθεια δεν είναι συγκεκριμένη για το spring-tx
-
CVE-2013-6430
-
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Η ευπάθεια δεν είναι συγκεκριμένη για το spring-tx
-
CVE-2013-7315
-
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Η ευπάθεια δεν είναι συγκεκριμένη για το spring-tx
-
CVE-2014-0054
-
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Η ευπάθεια δεν είναι συγκεκριμένη για το spring-tx
-
CVE-2014-0225
-
Ψηλά
ΨΕΥΔΗΣ
Η ευπάθεια δεν είναι συγκεκριμένη για το spring-tx
-
CVE-2014-1904
-
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Η ευπάθεια δεν είναι συγκεκριμένη για το spring-tx
-
CVE-2014-3625
-
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Η ευπάθεια δεν είναι συγκεκριμένη για το spring-tx
-
CVE-2016-9878
-
Ψηλά
ΨΕΥΔΗΣ
Η ευπάθεια δεν είναι συγκεκριμένη για το spring-tx
-
CVE-2018-1270
-
Ψηλά
ΨΕΥΔΗΣ
Η ευπάθεια δεν είναι συγκεκριμένη για το spring-tx
-
CVE-2018-1271
-
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Η ευπάθεια δεν είναι συγκεκριμένη για το spring-tx
-
CVE-2018-1272
-
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Η ευπάθεια δεν είναι συγκεκριμένη για το spring-tx
αντηρίδες-πυρήνας:1.3.8
-
CVE-2011-5057 (OSSINDEX)
Μέτριας Δυσκολίας
ΦΑΣΛΕ
Ευπάθεια στα Struts 2
-
CVE-2012-0391 (OSSINDEX)
CVE-2012-0391
Ψηλά
ΨΕΥΔΗΣ
Ευπάθεια στα Struts 2
-
CVE-2014-0094 (OSSINDEX)
CVE-2014-0094
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Ευπάθεια στα Struts 2
-
CVE-2014-0113 (OSSINDEX)
CVE-2014-0113
Ψηλά
ΨΕΥΔΗΣ
Ευπάθεια στα Struts 2
CVE-2016-1182
3VE-2016-1182
-
Ψηλά
ΑΛΗΘΙΝΗ
-
-
CVE-2011-5057
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Ευπάθεια στα Struts 2
-
CVE-2012-0392 (OSSINDEX)
CVE-2012-0392
Ψηλά
ΨΕΥΔΗΣ
Ευπάθεια στα Struts 2
-
CVE-2012-0393 (OSSINDEX)
CVE-2012-0393
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Ευπάθεια στα Struts 2
CVE-2015-0899
CVE-2015-0899
-
Ψηλά
ΑΛΗΘΙΝΗ
-
CVE-2012-0394
CVE-2012-0394
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Ευπάθεια στα Struts 2
-
CVE-2012-0838 (OSSINDEX)
CVE-2012-0838
Ψηλά
ΨΕΥΔΗΣ
Ευπάθεια στα Struts 2
-
CVE-2013-1965 (OSSINDEX)
CVE-2013-1965
Ψηλά
ΨΕΥΔΗΣ
Ευπάθεια στα Struts 2
-
CVE-2013-1966 (OSSINDEX)
CVE-2013-1966
Ψηλά
ΦΑΣΛΕ
Ευπάθεια στα Struts 2
-
CVE-2013-2115
CVE-2013-2115
Ψηλά
ΦΑΣΛΕ
Ευπάθεια στα Struts 2
-
CVE-2013-2134 (OSSINDEX)
CVE-2013-2134
Ψηλά
ΦΑΣΛΕ
Ευπάθεια στα Struts 2
-
CVE-2013-2135 (OSSINDEX)
CVE-2013-2135
Ψηλά
ΦΑΣΛΕ
Ευπάθεια στα Struts 2
CVE-2014-0114
CVE-2014-0114
-
Ψηλά
ΑΛΗΘΙΝΗ
-
CVE-2015-2992
CVE-2015-2992
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Ευπάθεια στα Struts 2
-
CVE-2016-0785 (OSSINDEX)
CVE-2016-0785
Ψηλά
ΨΕΥΔΗΣ
Ευπάθεια στα Struts 2
CVE-2016-1181
CVE-2016-1181
-
Ψηλά
ΑΛΗΘΙΝΗ
-
CVE-2016-4003 (OSSINDEX)
CVE-2016-4003
Ψηλά
ΨΕΥΔΗΣ
Ευπάθεια στα Struts 2
xwork-core: 2.3.30
CVE-2017-9804
-
-
Ψηλά
ΑΛΗΘΙΝΗ
SONATYPE-2017-0173
-
-
Ψηλά
ΑΛΗΘΙΝΗ
CVE-2017-7672
-
-
Ψηλά
ΨΕΥΔΗΣ
Διπλότυπο του CVE-2017-9804
SONATYPE-2016-0127
-
-
Ψηλά
ΑΛΗΘΙΝΗ
αντηρίδες 2-πυρήνα:2.3.30
-
CVE-2016-6795
CVE-2016-6795
Ψηλά
ΑΛΗΘΙΝΗ
-
CVE-2017-9787
CVE-2017-9787
Ψηλά
ΑΛΗΘΙΝΗ
-
CVE-2017-9791
CVE-2017-9791
Ψηλά
ΑΛΗΘΙΝΗ
-
CVE-2017-9793
-
Ψηλά
ΨΕΥΔΗΣ
Διπλότυπο του CVE-2018-1327
-
CVE-2017-9804
-
Ψηλά
ΑΛΗΘΙΝΗ
-
CVE-2017-9805
CVE-2017-9805
Ψηλά
ΑΛΗΘΙΝΗ
CVE-2016-4003
-
-
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Ισχύει για Apache Struts 2.x έως 2.3.28, που είναι η έκδοση 2.3.30. Ωστόσο, με βάση την περιγραφή, το CVE είναι έγκυρο για οποιαδήποτε έκδοση του Struts 2 εάν χρησιμοποιείται JRE 1.7 ή λιγότερο. Προφανώς αποφάσισαν να μας αντασφαλίσουν εδώ, αλλά περισσότερο μοιάζει με FALSE
-
CVE-2018-1327
CVE-2018-1327
Ψηλά
ΑΛΗΘΙΝΗ
CVE-2017-5638
CVE-2017-5638
CVE-2017-5638
Ψηλά
ΑΛΗΘΙΝΗ
Η ίδια ευπάθεια που εκμεταλλεύτηκαν οι χάκερ του Equifax το 2017
CVE-2017-12611
CVE-2017-12611
-
Ψηλά
ΑΛΗΘΙΝΗ
CVE-2018-11776
CVE-2018-11776
CVE-2018-11776
Ψηλά
ΑΛΗΘΙΝΗ
struts-taglib:1.3.8
-
CVE-2012-0394
-
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Για αντηρίδες 2 πυρήνων
-
CVE-2013-2115
-
Ψηλά
ΨΕΥΔΗΣ
Για αντηρίδες 2 πυρήνων
-
CVE-2014-0114
-
Ψηλά
ΨΕΥΔΗΣ
Για κοινά-φασολάκια
-
CVE-2015-0899
-
Ψηλά
ΨΕΥΔΗΣ
Δεν ισχύει για taglib
-
CVE-2015-2992
-
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Αναφέρεται σε αντηρίδες 2-πυρήνων
-
CVE-2016-1181
-
Ψηλά
ΨΕΥΔΗΣ
Δεν ισχύει για taglib
-
CVE-2016-1182
-
Ψηλά
ΨΕΥΔΗΣ
Δεν ισχύει για taglib
αντηρίδες-πλακίδια-1.3.8
-
CVE-2012-0394
-
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Για αντηρίδες 2 πυρήνων
-
CVE-2013-2115
-
Ψηλά
ΨΕΥΔΗΣ
Για αντηρίδες 2 πυρήνων
-
CVE-2014-0114
-
Ψηλά
ΨΕΥΔΗΣ
Κάτω από κοινά-φασόλια
-
CVE-2015-0899
-
Ψηλά
ΨΕΥΔΗΣ
Δεν ισχύει για πλακάκια
-
CVE-2015-2992
-
Μέτριας Δυσκολίας
ΨΕΥΔΗΣ
Για αντηρίδες 2 πυρήνων
-
CVE-2016-1181
-
Ψηλά
ΨΕΥΔΗΣ
Δεν ισχύει για taglib
-
CVE-2016-1182
-
Ψηλά
ΨΕΥΔΗΣ
Δεν ισχύει για taglib
Πηγή: www.habr.com
