ความสำคัญของการวิเคราะห์องค์ประกอบซอฟต์แวร์ของบุคคลที่สาม (การวิเคราะห์องค์ประกอบซอฟต์แวร์ภาษาอังกฤษ - SCA) ในกระบวนการพัฒนานั้นเพิ่มขึ้นพร้อมกับการเปิดตัวรายงานประจำปีเกี่ยวกับช่องโหว่ของไลบรารีโอเพ่นซอร์สซึ่งเผยแพร่โดย Synopsys, Sonatype, Snyk, White Source ตามรายงาน
หนึ่งในกรณีตัวอย่างมากที่สุด
บทความนี้จะกล่าวถึงประเด็นการเลือกเครื่องมือในการทำ SCA ในด้านคุณภาพของผลการวิเคราะห์ การเปรียบเทียบการทำงานของเครื่องมือจะได้รับด้วย เราจะออกจากขั้นตอนการฝังใน CI / CD และโอกาสในการรวมสำหรับการเผยแพร่ในภายหลัง OWASP นำเสนอเครื่องมือที่หลากหลาย
หลักการของการดำเนินงาน
พิจารณาว่า CPE มีลักษณะอย่างไร:
cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other
- ส่วนหนึ่ง: การบ่งชี้ว่าส่วนประกอบเป็นของแอปพลิเคชัน (a) ระบบปฏิบัติการ (o) ฮาร์ดแวร์ (h) (รายการที่จำเป็น)
- ผู้ขาย: ชื่อผู้ผลิตสินค้า (Required item)
- สินค้า: ชื่อสินค้า (จำเป็น)
- เวอร์ชัน: เวอร์ชันคอมโพเนนต์ (รายการที่เลิกใช้แล้ว)
- ปรับปรุง: อัพเดทแพ็คเกจ
- ฉบับ: รุ่นที่สืบทอดมา (รายการที่เลิกใช้แล้ว)
- ÀÒÉÒ: ภาษาที่กำหนดไว้ใน RFC-5646
- ฉบับ SW: เวอร์ชันซอฟต์แวร์
- เป้าหมาย SW: สภาพแวดล้อมซอฟต์แวร์ที่ผลิตภัณฑ์ทำงาน
- เป้าหมาย HW: สภาพแวดล้อมของฮาร์ดแวร์ที่ผลิตภัณฑ์ทำงานอยู่
- อื่น ๆ : ข้อมูลซัพพลายเออร์หรือผลิตภัณฑ์
ตัวอย่าง CPE มีลักษณะดังนี้:
cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*
สตริงหมายความว่า CPE เวอร์ชัน 2.3 อธิบายส่วนประกอบแอปพลิเคชันจากผู้ผลิต pivotal_software
ด้วยชื่อเรื่อง spring_framework
เวอร์ชัน 3.0.0 หากเราเปิดช่องโหว่
URL ยังถูกใช้โดยเครื่องมือ SCA รูปแบบ URL ของแพ็คเกจเป็นดังนี้:
scheme:type/namespace/name@version?qualifiers#subpath
- โครงการ: จะมี 'pkg' เสมอเพื่อระบุว่านี่คือ URL ของแพ็คเกจ (จำเป็น)
- ประเภทงาน: "ประเภท" ของแพ็คเกจ หรือ "โปรโตคอล" ของแพ็คเกจ เช่น maven, npm, nuget, gem, pypi เป็นต้น (รายการที่จำเป็น)
- Namespace: คำนำหน้าชื่อบางอย่าง เช่น รหัสกลุ่ม Maven เจ้าของอิมเมจ Docker ผู้ใช้ GitHub หรือองค์กร เป็นทางเลือกและขึ้นอยู่กับประเภท
- ชื่อ: ชื่อแพ็คเกจ (จำเป็น)
- เวอร์ชัน: เวอร์ชันแพ็คเกจ
- บ่น: ข้อมูลคุณสมบัติเพิ่มเติมสำหรับแพ็คเกจ เช่น OS, สถาปัตยกรรม, การแจกจ่าย ฯลฯ รายการทางเลือกและรายการเฉพาะประเภท
- เส้นทางย่อย: เส้นทางเพิ่มเติมในแพ็คเกจที่สัมพันธ์กับรูทของแพ็คเกจ
ตัวอย่างเช่น:
pkg:golang/google.golang.org/genproto#googleapis/api/annotations
pkg:maven/org.apache.commons/[email protected]
pkg:pypi/[email protected]
ตัวอย่างลักษณะของ 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/[email protected]</purl>
</component>
<!-- More components here -->
</components>
</bom>
BOM สามารถใช้เป็นพารามิเตอร์อินพุตสำหรับการติดตามการพึ่งพา แต่ยังใช้สำหรับส่วนประกอบซอฟต์แวร์สินค้าคงคลังในห่วงโซ่อุปทาน เช่น สำหรับการจัดหาซอฟต์แวร์ให้กับลูกค้า ในปี 2014 มีการเสนอกฎหมายเพื่อพิจารณาในสหรัฐอเมริกาด้วยซ้ำ
กลับไปที่ SCA, Dependency Track มีการผสานรวมกับแพลตฟอร์มการแจ้งเตือนอย่าง Slack, ระบบจัดการช่องโหว่อย่าง Kenna Security นอกจากนี้ยังควรกล่าวถึงว่า Dependency Track ยังตรวจพบแพ็คเกจเวอร์ชันที่ล้าสมัยและให้ข้อมูลเกี่ยวกับใบอนุญาต (เนื่องจากการรองรับ SPDX)
หากเราพูดถึงคุณภาพของ SCA โดยเฉพาะ แสดงว่ามีความแตกต่างพื้นฐาน
ติดตามการขึ้นต่อกันไม่ยอมรับโครงการเป็นอินพุต แต่เป็น BOM ซึ่งหมายความว่าหากเราต้องการทดสอบโปรเจ็กต์ เราต้องสร้าง bom.xml ก่อน เช่น ด้วย CycloneDX ดังนั้น Dependency Track จึงขึ้นอยู่กับ CycloneDX โดยตรง ในขณะเดียวกันก็อนุญาตให้ปรับแต่งได้ ดังนั้นทีม OZON จึงเขียน
สรุปคุณสมบัติการทำงานบางอย่าง และพิจารณาภาษาที่รองรับสำหรับการวิเคราะห์:
Язык
เน็กซัส ไอคิว
ตรวจสอบการพึ่งพา
ติดตามการพึ่งพา
ชวา
+
+
+
C / C ++
+
+
-
C#
+
+
-
สุทธิ.
+
+
+
แอร์ลัง
-
-
+
จาวาสคริปต์ (NodeJS)
+
+
+
PHP
+
+
+
หลาม
+
+
+
ทับทิม
+
+
+
Perl
-
-
-
สกาล่า
+
+
+
วัตถุประสงค์ค
+
+
-
รวดเร็ว
+
+
-
R
+
-
-
Go
+
+
+
ฟังก์ชั่น
ฟังก์ชั่น
เน็กซัส ไอคิว
ตรวจสอบการพึ่งพา
ติดตามการพึ่งพา
ความสามารถในการตรวจสอบส่วนประกอบที่ใช้ในซอร์สโค้ดเพื่อความบริสุทธิ์ของใบอนุญาต
+
-
+
ความสามารถในการสแกนและวิเคราะห์ช่องโหว่และความสะอาดของใบอนุญาตสำหรับอิมเมจ Docker
+ บูรณาการกับแคลร์
-
-
ความสามารถในการกำหนดค่านโยบายความปลอดภัยเพื่อใช้ไลบรารีโอเพ่นซอร์ส
+
-
-
ความสามารถในการสแกนที่เก็บโอเพ่นซอร์สเพื่อหาส่วนประกอบที่มีช่องโหว่
+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, ยำ, หางเสือ, นักเทียบท่า, CocoaPods, Git LFS
-
+ Hex, RubyGems, มาเวน, NPM, Nuget, Pypi
ความพร้อมของทีมวิจัยเฉพาะ
+
-
-
การทำงานในวงจรปิด
+
+
+
การใช้ฐานข้อมูลบุคคลที่สาม
+ Sonatype ฐานข้อมูลแบบปิด
+ Sonatype OSS ที่ปรึกษาสาธารณะของ NPM
+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, รองรับฐานข้อมูลช่องโหว่ของตัวเอง
ความสามารถในการกรองส่วนประกอบโอเพ่นซอร์สเมื่อพยายามอัปโหลดไปยังลูปการพัฒนาตามนโยบายที่กำหนดค่า
+
-
-
คำแนะนำสำหรับการแก้ไขช่องโหว่ ความพร้อมของลิงก์ไปยังการแก้ไข
+
+- (ขึ้นอยู่กับคำอธิบายในฐานข้อมูลสาธารณะ)
+- (ขึ้นอยู่กับคำอธิบายในฐานข้อมูลสาธารณะ)
การจัดอันดับช่องโหว่ที่ค้นพบตามระดับวิกฤต
+
+
+
รูปแบบการเข้าถึงบทบาท
+
-
+
การสนับสนุน CLI
+
+
+- (เฉพาะ CycloneDX เท่านั้น)
คัดเลือก/จัดประเภทช่องโหว่ตามเกณฑ์ที่กำหนด
+
-
+
แดชบอร์ดตามสถานะแอปพลิเคชัน
+
-
+
การสร้างรายงานในรูปแบบ PDF
+
-
-
การสร้างรายงานในรูปแบบ JSONCSV
+
+
-
รองรับภาษารัสเซีย
-
-
-
โอกาสในการบูรณาการ
บูรณาการ
เน็กซัส ไอคิว
ตรวจสอบการพึ่งพา
ติดตามการพึ่งพา
การผสานรวมกับ LDAP/Active Directory
+
-
+
การรวมการบูรณาการอย่างต่อเนื่องของไม้ไผ่
+
-
-
การรวมเข้ากับระบบการรวมแบบต่อเนื่อง (การรวมแบบต่อเนื่อง) TeamCity
+
-
-
การผสานรวมกับระบบการรวมอย่างต่อเนื่อง (การรวมอย่างต่อเนื่อง) GitLab
+
+- (เป็นปลั๊กอินสำหรับ GitLab)
+
การบูรณาการเข้ากับระบบบูรณาการอย่างต่อเนื่อง (continous integration) Jenkins
+
+
+
ความพร้อมใช้งานของปลั๊กอิน IDE
+ IntelliJ, คราส, Visual Studio
-
-
รองรับการรวมแบบกำหนดเองผ่านบริการเว็บ (API) ของเครื่องมือ
+
-
+
ตรวจสอบการพึ่งพา
เริ่มแรก
เรียกใช้การตรวจสอบการพึ่งพาในแอปพลิเคชันที่มีช่องโหว่โดยเจตนา
สำหรับสิ่งนี้เราใช้
mvn org.owasp:dependency-check-maven:check
จะปรากฏในไดเร็กทอรีเป้าหมาย
มาเปิดไฟล์กันเถอะ หลังจากสรุปจำนวนช่องโหว่ทั้งหมดแล้ว เราจะเห็นข้อมูลเกี่ยวกับช่องโหว่ที่มีระดับความรุนแรงและความเชื่อมั่นสูง ซึ่งระบุถึงแพ็คเกจ, CPE, จำนวนของ CVE
ข้อมูลรายละเอียดเพิ่มเติมดังต่อไปนี้ โดยเฉพาะอย่างยิ่งบนพื้นฐานของการตัดสินใจ (หลักฐาน) นั่นคือ BOM บางอย่าง
ถัดมาคือ CPE, PURL และคำอธิบายของ CVE อย่างไรก็ตาม คำแนะนำสำหรับการแก้ไขไม่ได้แนบมาด้วยเนื่องจากไม่มีอยู่ในฐานข้อมูล NVD
หากต้องการดูผลการสแกนอย่างเป็นระบบ คุณสามารถกำหนดค่า Nginx ด้วยการตั้งค่าขั้นต่ำ หรือส่งข้อบกพร่องที่ได้รับไปยังระบบจัดการข้อบกพร่องที่รองรับตัวเชื่อมต่อการตรวจสอบการพึ่งพา ตัวอย่างเช่น Defect Dojo
ติดตามการพึ่งพา
การติดตั้ง
การติดตามการพึ่งพาเป็นแพลตฟอร์มบนเว็บที่มีกราฟแสดงผล ดังนั้นจึงไม่มีปัญหาเฉียบพลันในการจัดเก็บข้อบกพร่องในโซลูชันของบุคคลที่สาม
มีสถานการณ์ที่รองรับสำหรับการติดตั้งดังต่อไปนี้: Docker, WAR, Executable WAR
เริ่มแรก
ไปที่ URL ของบริการที่กำลังทำงานอยู่ เราเข้าสู่ผู้ดูแลระบบ / ผู้ดูแลระบบเปลี่ยนข้อมูลเข้าสู่ระบบและรหัสผ่านหลังจากนั้นเราจะไปที่แดชบอร์ด สิ่งต่อไปที่เราจะทำคือสร้างโปรเจ็กต์สำหรับแอปพลิเคชันทดสอบ Java ใน หน้าแรก/โครงการ → สร้างโครงการ . ลองใช้ DVJA เป็นตัวอย่าง
เนื่องจากการติดตามการพึ่งพาสามารถรับ BOM เป็นอินพุตเท่านั้น จึงต้องดึงข้อมูล BOM นี้ มาใช้กันเถอะ
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom
เราได้รับ bom.xml และโหลดไฟล์ในโครงการที่สร้างขึ้น DVJA → การพึ่งพา → อัปโหลด BOM.
ไปที่การบริหาร → วิเคราะห์ เราเข้าใจว่าเราเปิดใช้งาน Internal Analyzer เท่านั้น ซึ่งรวมถึง NVD มาเชื่อมต่อ Sonatype OSS Index กันเถอะ
ดังนั้นเราจึงได้ภาพต่อไปนี้สำหรับโครงการของเรา:
นอกจากนี้ ในรายการคุณจะพบช่องโหว่หนึ่งรายการที่ใช้กับ Sonatype OSS:
ความผิดหวังหลักคือการติดตามการพึ่งพาไม่ยอมรับรายงาน xml การตรวจสอบการพึ่งพาอีกต่อไป การผสานรวมการตรวจสอบการพึ่งพาเวอร์ชันล่าสุดที่รองรับคือ 1.0.0 - 4.0.2 ในขณะที่ฉันทดสอบ 5.3.2
ที่นี่
เน็กซัส ไอคิว
เริ่มแรก
การติดตั้ง Nexus IQ มาจากไฟล์เก็บถาวรของซอฟต์แวร์
หลังจากลงชื่อเข้าใช้คอนโซล คุณต้องสร้างองค์กรและแอปพลิเคชัน
อย่างที่คุณเห็น การกำหนดค่าในกรณีของ IQ ค่อนข้างซับซ้อนกว่า เนื่องจากเราต้องสร้างนโยบายที่ใช้กับ "ระยะ" ต่างๆ (dev, build, stage, release) นี่เป็นสิ่งจำเป็นในการบล็อกส่วนประกอบที่มีช่องโหว่เมื่อเข้าใกล้ขั้นตอนการผลิต หรือบล็อกทันทีที่เข้าสู่ Nexus Repo เมื่อดาวน์โหลดโดยนักพัฒนา
เพื่อให้รู้สึกถึงความแตกต่างระหว่างโอเพ่นซอร์สและองค์กร ลองสแกนแบบเดียวกันผ่าน Nexus IQ ด้วยวิธีเดียวกัน 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 ถัดจากส่วนประกอบหมายความว่าส่วนประกอบนั้นเป็น Direct Dependency และตัวอักษร T ถัดจากส่วนประกอบหมายความว่าส่วนประกอบนั้นเป็น Transitive Dependency นั่นคือเป็นการส่งผ่าน
โดยวิธีการรายงาน
หากเราเปิดการละเมิดนโยบาย Nexus IQ ข้อใดข้อหนึ่ง เราจะเห็นคำอธิบายของคอมโพเนนต์ รวมถึงกราฟเวอร์ชันซึ่งแสดงตำแหน่งของเวอร์ชันปัจจุบันบนกราฟเวลา ตลอดจนจุดที่ช่องโหว่หยุดทำงาน มีความเสี่ยง ความสูงของแท่งเทียนบนกราฟแสดงถึงความนิยมในการใช้องค์ประกอบนี้
หากคุณไปที่ส่วนช่องโหว่และเปิด CVE คุณสามารถอ่านคำอธิบายของช่องโหว่นี้ คำแนะนำสำหรับการแก้ไข ตลอดจนสาเหตุที่องค์ประกอบนี้ถูกละเมิด นั่นคือ การปรากฏตัวของคลาส DiskFileitem.class
.
เรามาสรุปเฉพาะส่วนประกอบ Java ของบุคคลที่สามโดยเอาส่วนประกอบ js ออก ในวงเล็บ เราระบุจำนวนช่องโหว่ที่พบนอก NVD
IQ ของ Nexus ทั้งหมด:
- การอ้างอิงที่สแกน: 62
- การพึ่งพาที่มีช่องโหว่: 16
- พบช่องโหว่: 42 (8 sonatype db)
การตรวจสอบการพึ่งพาทั้งหมด:
- การอ้างอิงที่สแกน: 47
- การพึ่งพาที่มีช่องโหว่: 13
- พบช่องโหว่: 91 (14 sonatype oss)
ติดตามการพึ่งพาทั้งหมด:
- การอ้างอิงที่สแกน: 59
- การพึ่งพาที่มีช่องโหว่: 10
- พบช่องโหว่: 51 (1 sonatype oss)
ขั้นตอนต่อไปคือการวิเคราะห์ผลลัพธ์และค้นหาว่าช่องโหว่ใดในช่องโหว่เหล่านี้เป็นข้อบกพร่องที่แท้จริงและเป็นผลบวกที่ผิดพลาด
ข้อจำกัดความรับผิดชอบ
บทวิจารณ์นี้ไม่ใช่ความจริงที่เถียงไม่ได้ ผู้เขียนไม่ได้มีเป้าหมายที่จะแยกเครื่องดนตรีออกจากพื้นหลังของผู้อื่น จุดประสงค์ของการตรวจสอบคือเพื่อแสดงวิธีการทำงานของเครื่องมือ SCA และวิธีการตรวจสอบผลลัพธ์
เปรียบเทียบผลลัพธ์
ข้อกำหนดและเงื่อนไข:
ผลบวกลวงสำหรับช่องโหว่ของส่วนประกอบบุคคลที่สามคือ:
- CVE ไม่ตรงกับส่วนประกอบที่ระบุ
- ตัวอย่างเช่น หากพบช่องโหว่ใน struts2 framework และเครื่องมือชี้ไปที่ส่วนประกอบของ struts-tiles framework ที่ไม่ได้รับผลกระทบจากช่องโหว่นี้ แสดงว่าเป็นผลบวกลวง
- 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 การศึกษาเกี่ยวข้องกับส่วนประกอบของจาวาเท่านั้น (ไม่มี js)
ผลสรุป
มาดูผลลัพธ์ของการตรวจสอบช่องโหว่ที่ระบุด้วยตนเอง สามารถดูรายงานฉบับเต็มสำหรับแต่ละ CVE ได้ในภาคผนวก
ผลสรุปสำหรับช่องโหว่ทั้งหมด:
พารามิเตอร์
เน็กซัส ไอคิว
ตรวจสอบการพึ่งพา
ติดตามการพึ่งพา
ระบุช่องโหว่ทั้งหมด
42
91
51
ระบุช่องโหว่ไม่ถูกต้อง (ผลบวกลวง)
2 (4.76%)
62 (68,13%)
29 (56.86%)
ไม่พบช่องโหว่ที่เกี่ยวข้อง (ลบเท็จ)
10
20
27
ผลสรุปตามองค์ประกอบ:
พารามิเตอร์
เน็กซัส ไอคิว
ตรวจสอบการพึ่งพา
ติดตามการพึ่งพา
เปิดเผยส่วนประกอบทั้งหมด
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
สปริงบริบท:3.0.5
CVE-2011-2894
แกนสปริง:3.0.5
CVE-2011-2894
ลักษณะ
ลักษณะ
CVE-2011-2894 เป็นที่รู้จักกันดีในตัวเอง ในรายงาน 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
FALSE
หากเราศึกษาช่องโหว่ CVE-2016-4003 เราจะเข้าใจว่าได้รับการแก้ไขในเวอร์ชัน 2.3.28 อย่างไรก็ตาม Nexus IQ แจ้งให้เราทราบ มีหมายเหตุในคำอธิบายของช่องโหว่:
นั่นคือช่องโหว่นี้มีอยู่เฉพาะเมื่อใช้ร่วมกับ JRE เวอร์ชันที่ล้าสมัยเท่านั้น ซึ่งพวกเขาตัดสินใจเตือนเรา อย่างไรก็ตาม เราถือว่าเป็น False Positive แม้ว่าจะไม่ใช่สิ่งที่น่ากลัวที่สุดก็ตาม
หมายเลข 3
ส่วนประกอบ
ช่องโหว่
ผล
xwork-คอร์:2.3.30
CVE-2017-9804
TRUE
xwork-คอร์:2.3.30
CVE-2017-7672
FALSE
หากเราดูคำอธิบายสำหรับ CVE-2017-9804 และ CVE-2017-7672 เราจะเข้าใจว่าปัญหาอยู่ใน URLValidator class
โดยมี CVE-2017-9804 มาจาก CVE-2017-7672 การมีอยู่ของช่องโหว่ที่สองนั้นไม่มีเพย์โหลดใด ๆ เว้นแต่ว่าความรุนแรงของมันจะเพิ่มขึ้นเป็นระดับสูง ดังนั้นนี่จึงถือเป็นสัญญาณรบกวนที่ไม่จำเป็น
โดยรวมแล้ว ไม่พบผลบวกปลอมอื่นๆ สำหรับ Nexus IQ
№ 4
มีบางสิ่งที่ทำให้ IQ โดดเด่นกว่าโซลูชั่นอื่นๆ
ส่วนประกอบ
ช่องโหว่
ผล
สปริงเว็บ:3.0.5
CVE-2020-5398
TRUE
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 การตรวจสอบการพึ่งพาและการติดตามการพึ่งพาพบช่องโหว่จำนวนมากที่ใช้กับ struts2-core ซึ่งโดยพื้นฐานแล้วเป็นเฟรมเวิร์กแยกต่างหาก ในกรณีนี้ Nexus IQ เข้าใจภาพได้อย่างถูกต้อง และใน CVE ที่ออกระบุว่า struts-core หมดอายุการใช้งานแล้ว และจำเป็นต้องเปลี่ยนไปใช้ 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 Check และ Dependency Track อ้างอิงถึง spring-core:3.0.5 จริงๆ แล้วอ้างอิงถึง spring-web:3.0.5 ในเวลาเดียวกัน Nexus IQ พบ CVE บางส่วนเหล่านี้ อย่างไรก็ตาม IQ ระบุ CVE เหล่านี้ไปยังส่วนประกอบอื่นได้อย่างถูกต้อง จากข้อเท็จจริงที่ว่าไม่พบช่องโหว่เหล่านี้ในสปริงคอร์ จึงไม่สามารถโต้แย้งได้ว่าช่องโหว่เหล่านี้ไม่ได้อยู่ในกรอบการทำงานโดยหลักการ และเครื่องมือโอเพ่นซอร์สก็ชี้ให้เห็นช่องโหว่เหล่านี้อย่างถูกต้อง (พวกเขาพลาดเพียงเล็กน้อย)
ผลการวิจัย
อย่างที่เราเห็น การพิจารณาความน่าเชื่อถือของช่องโหว่ที่ระบุโดยการตรวจสอบด้วยตนเองไม่ได้ให้ผลลัพธ์ที่ชัดเจน ซึ่งทำให้เกิดประเด็นที่ขัดแย้ง ผลลัพธ์คือโซลูชัน Nexus IQ มีอัตราผลบวกปลอมต่ำที่สุดและมีความแม่นยำสูงสุด
ประการแรก นี่เป็นเพราะทีม Sonatype ได้ขยายคำอธิบายสำหรับช่องโหว่ CVE แต่ละรายการจาก NVD ในฐานข้อมูล โดยระบุถึงระดับหรือฟังก์ชันของช่องโหว่สำหรับส่วนประกอบเวอร์ชันใดเวอร์ชันหนึ่ง โดยดำเนินการเพิ่มเติม การวิจัย (เช่น โดยการตรวจสอบช่องโหว่ในซอฟต์แวร์เวอร์ชันเก่า)
อิทธิพลที่สำคัญต่อผลลัพธ์ยังแสดงโดยช่องโหว่ที่ไม่ได้รวมอยู่ใน NVD แต่อย่างไรก็ตามมีอยู่ในฐานข้อมูล Sonatype ที่ระบุว่า SONATYPE ตามรายงาน
เป็นผลให้การตรวจสอบการพึ่งพาสร้างสัญญาณรบกวนจำนวนมาก ขาดองค์ประกอบที่มีช่องโหว่บางส่วน การติดตามการพึ่งพาทำให้เกิดสัญญาณรบกวนน้อยลงและตรวจจับส่วนประกอบจำนวนมาก ซึ่งไม่ทำร้ายสายตาในเว็บอินเตอร์เฟส
อย่างไรก็ตาม การปฏิบัติแสดงให้เห็นว่ามันเป็นโอเพ่นซอร์สที่ควรจะเป็นก้าวแรกสู่ DevSecOps ที่เติบโตเต็มที่ สิ่งแรกที่ต้องคำนึงถึงในการฝัง SCA ในการพัฒนาคือกระบวนการ กล่าวคือ การคิดร่วมกับฝ่ายบริหารและแผนกที่เกี่ยวข้องว่ากระบวนการในอุดมคติควรมีลักษณะอย่างไรในองค์กรของคุณ อาจกลายเป็นว่าสำหรับองค์กรของคุณ ในตอนแรก การตรวจสอบการพึ่งพาหรือการติดตามการพึ่งพาจะครอบคลุมความต้องการทางธุรกิจทั้งหมด และโซลูชันสำหรับองค์กรจะเป็นความต่อเนื่องที่สมเหตุสมผลเนื่องจากความซับซ้อนที่เพิ่มขึ้นของแอปพลิเคชันที่กำลังพัฒนา
ภาคผนวก A. ผลลัพธ์สำหรับส่วนประกอบ
คำอธิบาย:
- สูง - ช่องโหว่ระดับสูงและวิกฤตในส่วนประกอบ
- ปานกลาง — ช่องโหว่ที่มีความรุนแรงปานกลางในคอมโพเนนต์
- TRUE - ปัญหาเชิงบวกที่แท้จริง
- FALSE - ปัญหาบวกเท็จ
ส่วนประกอบ
เน็กซัส ไอคิว
ตรวจสอบการพึ่งพา
ติดตามการพึ่งพา
ผล
dom4j: 1.6.1
จุดสูง
จุดสูง
จุดสูง
TRUE
log4j-คอร์: 2.3
จุดสูง
จุดสูง
จุดสูง
TRUE
log4j: 1.2.14
จุดสูง
จุดสูง
-
TRUE
ของสะสมทั่วไป:3.1
จุดสูง
จุดสูง
จุดสูง
TRUE
Commons-fileupload:1.3.2
จุดสูง
จุดสูง
จุดสูง
TRUE
Commons-beanutils:1.7.0
จุดสูง
จุดสูง
จุดสูง
TRUE
ตัวแปลงสัญญาณทั่วไป:1:10
กลาง
-
-
TRUE
mysql-ตัวเชื่อมต่อ-java:5.1.42
จุดสูง
จุดสูง
จุดสูง
TRUE
สปริงนิพจน์:3.0.5
จุดสูง
ไม่พบส่วนประกอบ
TRUE
สปริงเว็บ:3.0.5
จุดสูง
ไม่พบส่วนประกอบ
จุดสูง
TRUE
สปริงบริบท:3.0.5
กลาง
ไม่พบส่วนประกอบ
-
TRUE
แกนสปริง:3.0.5
กลาง
จุดสูง
จุดสูง
TRUE
struts2-config-เบราว์เซอร์ปลั๊กอิน:2.3.30
กลาง
-
-
TRUE
สปริง-tx:3.0.5
-
จุดสูง
-
FALSE
สตรัทคอร์:1.3.8
จุดสูง
จุดสูง
จุดสูง
TRUE
xwork-core: 2.3.30
จุดสูง
-
-
TRUE
สตรัท 2 คอร์: 2.3.30
จุดสูง
จุดสูง
จุดสูง
TRUE
สตรัท-taglib:1.3.8
-
จุดสูง
-
FALSE
เสากระเบื้อง-1.3.8
-
จุดสูง
-
FALSE
ภาคผนวก B. ผลลัพธ์ของช่องโหว่
คำอธิบาย:
- สูง - ช่องโหว่ระดับสูงและวิกฤตในส่วนประกอบ
- ปานกลาง — ช่องโหว่ที่มีความรุนแรงปานกลางในคอมโพเนนต์
- TRUE - ปัญหาเชิงบวกที่แท้จริง
- FALSE - ปัญหาบวกเท็จ
ส่วนประกอบ
เน็กซัส ไอคิว
ตรวจสอบการพึ่งพา
ติดตามการพึ่งพา
ความรุนแรง
ผล
ความเห็น
dom4j: 1.6.1
CVE-2018-1000632
CVE-2018-1000632
CVE-2018-1000632
จุดสูง
TRUE
CVE-2020-10683
CVE-2020-10683
CVE-2020-10683
จุดสูง
TRUE
log4j-คอร์: 2.3
CVE-2017-5645
CVE-2017-5645
CVE-2017-5645
จุดสูง
TRUE
CVE-2020-9488
CVE-2020-9488
CVE-2020-9488
ต่ำ
TRUE
log4j: 1.2.14
CVE-2019-17571
CVE-2019-17571
-
จุดสูง
TRUE
-
CVE-2020-9488
-
ต่ำ
TRUE
โซนาไทป์-2010-0053
-
-
จุดสูง
TRUE
ของสะสมทั่วไป:3.1
-
CVE-2015-6420
CVE-2015-6420
จุดสูง
FALSE
RCE ซ้ำ (OSSINDEX)
-
CVE-2017-15708
CVE-2017-15708
จุดสูง
FALSE
RCE ซ้ำ (OSSINDEX)
โซนาไทป์-2015-0002
RCE (ออสซินเด็กซ์)
RCE(ออสซินเด็กซ์)
จุดสูง
TRUE
Commons-fileupload:1.3.2
CVE-2016-1000031
CVE-2016-1000031
CVE-2016-1000031
จุดสูง
TRUE
โซนาไทป์-2014-0173
-
-
กลาง
TRUE
Commons-beanutils:1.7.0
CVE-2014-0114
CVE-2014-0114
CVE-2014-0114
จุดสูง
TRUE
-
CVE-2019-10086
CVE-2019-10086
จุดสูง
FALSE
ช่องโหว่ใช้ได้กับเวอร์ชัน 1.9.2+ เท่านั้น
ตัวแปลงสัญญาณทั่วไป:1:10
โซนาไทป์-2012-0050
-
-
กลาง
TRUE
mysql-ตัวเชื่อมต่อ-java:5.1.42
CVE-2018-3258
CVE-2018-3258
CVE-2018-3258
จุดสูง
TRUE
CVE-2019-2692
CVE-2019-2692
-
กลาง
TRUE
-
CVE-2020-2875
-
กลาง
FALSE
ช่องโหว่เดียวกันกับ CVE-2019-2692 แต่ด้วยการเพิ่ม "การโจมตีอาจส่งผลกระทบต่อผลิตภัณฑ์เพิ่มเติมอย่างมีนัยสำคัญ"
-
CVE-2017-15945
-
จุดสูง
FALSE
ใช้ไม่ได้กับ mysql-connector-java
-
CVE-2020-2933
-
ต่ำ
FALSE
ซ้ำกับ CVE-2020-2934
CVE-2020-2934
CVE-2020-2934
-
กลาง
TRUE
สปริงนิพจน์:3.0.5
CVE-2018-1270
ไม่พบส่วนประกอบ
-
จุดสูง
TRUE
CVE-2018-1257
-
-
กลาง
TRUE
สปริงเว็บ:3.0.5
CVE-2016-1000027
ไม่พบส่วนประกอบ
-
จุดสูง
TRUE
CVE-2014-0225
-
CVE-2014-0225
จุดสูง
TRUE
CVE-2011-2730
-
-
จุดสูง
TRUE
-
-
CVE-2013-4152
กลาง
TRUE
CVE-2018-1272
-
-
จุดสูง
TRUE
CVE-2020-5398
-
-
จุดสูง
TRUE
กรณีที่เข้าข้าง IQ: "ทีมวิจัยความปลอดภัยของ Sonatype ค้นพบว่าช่องโหว่นี้ถูกนำมาใช้ในเวอร์ชัน 3.0.2.RELEASE ไม่ใช่ 5.0.x ตามที่ระบุไว้ในคำแนะนำ"
CVE-2013-6429
-
-
กลาง
TRUE
CVE-2014-0054
-
CVE-2014-0054
กลาง
TRUE
CVE-2013-6430
-
-
กลาง
TRUE
สปริงบริบท:3.0.5
CVE-2011-2894
ไม่พบส่วนประกอบ
-
กลาง
TRUE
แกนสปริง:3.0.5
-
CVE-2011-2730
CVE-2011-2730
จุดสูง
TRUE
CVE-2011-2894
CVE-2011-2894
CVE-2011-2894
กลาง
TRUE
-
-
CVE-2013-4152
กลาง
FALSE
ช่องโหว่เดียวกันซ้ำใน spring-web
-
CVE-2013-4152
-
กลาง
FALSE
ช่องโหว่นี้เกี่ยวข้องกับส่วนประกอบของสปริงเว็บ
-
CVE-2013-6429
CVE-2013-6429
กลาง
FALSE
ช่องโหว่นี้เกี่ยวข้องกับส่วนประกอบของสปริงเว็บ
-
CVE-2013-6430
-
กลาง
FALSE
ช่องโหว่นี้เกี่ยวข้องกับส่วนประกอบของสปริงเว็บ
-
CVE-2013-7315
CVE-2013-7315
กลาง
FALSE
แยกจาก CVE-2013-4152 + ช่องโหว่นี้เกี่ยวข้องกับส่วนประกอบของสปริงเว็บ
-
CVE-2014-0054
CVE-2014-0054
กลาง
FALSE
ช่องโหว่นี้เกี่ยวข้องกับส่วนประกอบของสปริงเว็บ
-
CVE-2014-0225
-
จุดสูง
FALSE
ช่องโหว่นี้เกี่ยวข้องกับส่วนประกอบของสปริงเว็บ
-
-
CVE-2014-0225
จุดสูง
FALSE
ช่องโหว่เดียวกันซ้ำใน spring-web
-
CVE-2014-1904
CVE-2014-1904
กลาง
FALSE
ช่องโหว่นี้เกี่ยวข้องกับส่วนประกอบ spring-web-mvc
-
CVE-2014-3625
CVE-2014-3625
กลาง
FALSE
ช่องโหว่นี้เกี่ยวข้องกับส่วนประกอบ spring-web-mvc
-
CVE-2016-9878
CVE-2016-9878
จุดสูง
FALSE
ช่องโหว่นี้เกี่ยวข้องกับส่วนประกอบ spring-web-mvc
-
CVE-2018-1270
CVE-2018-1270
จุดสูง
FALSE
สำหรับสปริงนิพจน์ / ข้อความสปริง
-
CVE-2018-1271
CVE-2018-1271
กลาง
FALSE
ช่องโหว่นี้เกี่ยวข้องกับส่วนประกอบ spring-web-mvc
-
CVE-2018-1272
CVE-2018-1272
จุดสูง
TRUE
CVE-2014-3578
CVE-2014-3578(OSSINDEX)
CVE-2014-3578
กลาง
TRUE
โซนาไทป์-2015-0327
-
-
ต่ำ
TRUE
struts2-config-เบราว์เซอร์ปลั๊กอิน:2.3.30
โซนาไทป์-2016-0104
-
-
กลาง
TRUE
สปริง-tx:3.0.5
-
CVE-2011-2730
-
จุดสูง
FALSE
ช่องโหว่นี้ใช้ไม่ได้กับ spring-tx
-
CVE-2011-2894
-
จุดสูง
FALSE
ช่องโหว่นี้ใช้ไม่ได้กับ spring-tx
-
CVE-2013-4152
-
กลาง
FALSE
ช่องโหว่นี้ใช้ไม่ได้กับ spring-tx
-
CVE-2013-6429
-
กลาง
FALSE
ช่องโหว่นี้ใช้ไม่ได้กับ spring-tx
-
CVE-2013-6430
-
กลาง
FALSE
ช่องโหว่นี้ใช้ไม่ได้กับ spring-tx
-
CVE-2013-7315
-
กลาง
FALSE
ช่องโหว่นี้ใช้ไม่ได้กับ spring-tx
-
CVE-2014-0054
-
กลาง
FALSE
ช่องโหว่นี้ใช้ไม่ได้กับ spring-tx
-
CVE-2014-0225
-
จุดสูง
FALSE
ช่องโหว่นี้ใช้ไม่ได้กับ spring-tx
-
CVE-2014-1904
-
กลาง
FALSE
ช่องโหว่นี้ใช้ไม่ได้กับ spring-tx
-
CVE-2014-3625
-
กลาง
FALSE
ช่องโหว่นี้ใช้ไม่ได้กับ spring-tx
-
CVE-2016-9878
-
จุดสูง
FALSE
ช่องโหว่นี้ใช้ไม่ได้กับ spring-tx
-
CVE-2018-1270
-
จุดสูง
FALSE
ช่องโหว่นี้ใช้ไม่ได้กับ spring-tx
-
CVE-2018-1271
-
กลาง
FALSE
ช่องโหว่นี้ใช้ไม่ได้กับ spring-tx
-
CVE-2018-1272
-
กลาง
FALSE
ช่องโหว่นี้ใช้ไม่ได้กับ spring-tx
สตรัทคอร์:1.3.8
-
CVE-2011-5057(OSSINDEX)
กลาง
ฟาสเซิล
ช่องโหว่ต่อ Struts 2
-
CVE-2012-0391(OSSINDEX)
CVE-2012-0391
จุดสูง
FALSE
ช่องโหว่ต่อ Struts 2
-
CVE-2014-0094(OSSINDEX)
CVE-2014-0094
กลาง
FALSE
ช่องโหว่ต่อ Struts 2
-
CVE-2014-0113(OSSINDEX)
CVE-2014-0113
จุดสูง
FALSE
ช่องโหว่ต่อ Struts 2
CVE-2016-1182
3VE-2016-1182
-
จุดสูง
TRUE
-
-
CVE-2011-5057
กลาง
FALSE
ช่องโหว่ต่อ Struts 2
-
CVE-2012-0392(OSSINDEX)
CVE-2012-0392
จุดสูง
FALSE
ช่องโหว่ต่อ Struts 2
-
CVE-2012-0393(OSSINDEX)
CVE-2012-0393
กลาง
FALSE
ช่องโหว่ต่อ Struts 2
CVE-2015-0899
CVE-2015-0899
-
จุดสูง
TRUE
-
CVE-2012-0394
CVE-2012-0394
กลาง
FALSE
ช่องโหว่ต่อ Struts 2
-
CVE-2012-0838(OSSINDEX)
CVE-2012-0838
จุดสูง
FALSE
ช่องโหว่ต่อ Struts 2
-
CVE-2013-1965(OSSINDEX)
CVE-2013-1965
จุดสูง
FALSE
ช่องโหว่ต่อ 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
-
จุดสูง
TRUE
-
CVE-2015-2992
CVE-2015-2992
กลาง
FALSE
ช่องโหว่ต่อ Struts 2
-
CVE-2016-0785(OSSINDEX)
CVE-2016-0785
จุดสูง
FALSE
ช่องโหว่ต่อ Struts 2
CVE-2016-1181
CVE-2016-1181
-
จุดสูง
TRUE
-
CVE-2016-4003(OSSINDEX)
CVE-2016-4003
จุดสูง
FALSE
ช่องโหว่ต่อ Struts 2
xwork-คอร์:2.3.30
CVE-2017-9804
-
-
จุดสูง
TRUE
โซนาไทป์-2017-0173
-
-
จุดสูง
TRUE
CVE-2017-7672
-
-
จุดสูง
FALSE
เพิ่มเป็นสองเท่าของ CVE-2017-9804
โซนาไทป์-2016-0127
-
-
จุดสูง
TRUE
สตรัท 2 คอร์:2.3.30
-
CVE-2016-6795
CVE-2016-6795
จุดสูง
TRUE
-
CVE-2017-9787
CVE-2017-9787
จุดสูง
TRUE
-
CVE-2017-9791
CVE-2017-9791
จุดสูง
TRUE
-
CVE-2017-9793
-
จุดสูง
FALSE
ซ้ำกับ CVE-2018-1327
-
CVE-2017-9804
-
จุดสูง
TRUE
-
CVE-2017-9805
CVE-2017-9805
จุดสูง
TRUE
CVE-2016-4003
-
-
กลาง
FALSE
ใช้กับ Apache Struts 2.x จนถึง 2.3.28 ซึ่งเป็นเวอร์ชัน 2.3.30 อย่างไรก็ตาม ตามคำอธิบาย CVE ใช้ได้กับ Struts 2 ทุกเวอร์ชันตราบเท่าที่ใช้ JRE 1.7 และต่ำกว่า เห็นได้ชัดว่าพวกเขาตัดสินใจต่อประกันให้เราที่นี่ แต่ดูเหมือน FALSE มากกว่า
-
CVE-2018-1327
CVE-2018-1327
จุดสูง
TRUE
CVE-2017-5638
CVE-2017-5638
CVE-2017-5638
จุดสูง
TRUE
ช่องโหว่เดียวกันกับที่ผู้โจมตีโจมตีใน Equifax ในปี 2017
CVE-2017-12611
CVE-2017-12611
-
จุดสูง
TRUE
CVE-2018-11776
CVE-2018-11776
CVE-2018-11776
จุดสูง
TRUE
สตรัท-taglib:1.3.8
-
CVE-2012-0394
-
กลาง
FALSE
สำหรับสตรัท 2 แกน
-
CVE-2013-2115
-
จุดสูง
FALSE
สำหรับสตรัท 2 แกน
-
CVE-2014-0114
-
จุดสูง
FALSE
สำหรับถั่วทั่วไป
-
CVE-2015-0899
-
จุดสูง
FALSE
ไม่เกี่ยวข้องกับ taglib
-
CVE-2015-2992
-
กลาง
FALSE
ที่เกี่ยวข้องกับ struts2-core
-
CVE-2016-1181
-
จุดสูง
FALSE
ไม่เกี่ยวข้องกับ taglib
-
CVE-2016-1182
-
จุดสูง
FALSE
ไม่เกี่ยวข้องกับ taglib
เสากระเบื้อง-1.3.8
-
CVE-2012-0394
-
กลาง
FALSE
สำหรับสตรัท 2 แกน
-
CVE-2013-2115
-
จุดสูง
FALSE
สำหรับสตรัท 2 แกน
-
CVE-2014-0114
-
จุดสูง
FALSE
ภายใต้ถั่วทั่วไป
-
CVE-2015-0899
-
จุดสูง
FALSE
ใช้ไม่ได้กับกระเบื้อง
-
CVE-2015-2992
-
กลาง
FALSE
สำหรับสตรัท 2 แกน
-
CVE-2016-1181
-
จุดสูง
FALSE
ไม่เกี่ยวข้องกับ taglib
-
CVE-2016-1182
-
จุดสูง
FALSE
ไม่เกี่ยวข้องกับ taglib
ที่มา: will.com