DAGDA เป็นเครื่องมือในการวิเคราะห์ช่องโหว่ที่เป็นที่รู้จักโทรจันไวรัสมัลแวร์และภัยคุกคามที่เป็นอันตรายอื่น ๆ ในรูปภาพ/คอนเทนเนอร์นักเทียบท่าและตรวจสอบ Docker Daemon และดำเนินการคอนเทนเนอร์ Docker เพื่อตรวจจับกิจกรรมที่ผิดปกติ
เพื่อให้ปฏิบัติตามภารกิจของมันก่อนอื่นช่องโหว่ที่รู้จักกันดีในฐานะ CVES (ช่องโหว่ทั่วไปและความเสี่ยง) การเสนอราคา (Bugtraq IDs), Rhsas (คำแนะนำด้านความปลอดภัยของ Red Hat) และ Rhbas (คำแนะนำข้อผิดพลาดหมวกแดง)
จากนั้นเมื่อคุณทำการวิเคราะห์ช่องโหว่ที่เป็นที่รู้จัก Dagda จะดึงข้อมูลเกี่ยวกับซอฟต์แวร์ที่ติดตั้งลงในอิมเมจนักเทียบท่าของคุณเช่นแพ็คเกจระบบปฏิบัติการและการพึ่งพาของภาษาการเขียนโปรแกรมและตรวจสอบสำหรับแต่ละผลิตภัณฑ์และเวอร์ชันของมันหากไม่มีช่องโหว่ นอกจากนี้ Dagda ยังใช้ Clamav เป็นเครื่องยนต์ป้องกันไวรัสสำหรับการตรวจจับโทรจันไวรัสมัลแวร์และภัยคุกคามที่เป็นอันตรายอื่น ๆ ที่รวมอยู่ในภาพนักเทียบท่า/ภาชนะ
DAGDA รองรับภาพฐาน Linux หลายภาพ:
DAGDA วางอยู่บนการตรวจสอบการพึ่งพา OWASP + RETIRE.JS สำหรับการวิเคราะห์การพึ่งพาหลายครั้งจาก:
ในทางกลับกัน DAGDA ถูกรวมเข้ากับ FALCO สำหรับการตรวจสอบคอนเทนเนอร์ Docker Running เพื่อตรวจจับกิจกรรมที่ผิดปกติ นอกจากนี้ Dagda ยังรวมถึงการรวบรวมเหตุการณ์แบบเรียลไทม์จาก Docker Daemon
ในที่สุดรายงานการวิเคราะห์แต่ละครั้งของอิมเมจ/คอนเทนเนอร์ Docker รวมถึงการวิเคราะห์แบบคงที่ทั้งหมดและการตรวจสอบรันไทม์ทั้งหมดจะถูกเก็บไว้ใน MongoDB เดียวกันเพื่อให้มีประวัติของภาพ/คอนเทนเนอร์นักเทียบท่าแต่ละภาพเมื่อจำเป็น
ก่อนการใช้งาน DAGDA คุณต้องติดตั้งข้อกำหนดถัดไป:
ข้อกำหนดสามารถติดตั้งด้วย PIP:
sudo pip3 install -r requirements.txtคุณต้องติดตั้ง Docker สำหรับการใช้ DAGDA หากคุณต้องการคำแนะนำสำหรับการติดตั้ง Docker ให้ดูที่หน้าวิธีการติดตั้ง Docker
เพื่อหลีกเลี่ยงการใช้ sudo เมื่อคุณใช้คำสั่ง docker ให้สร้างกลุ่ม Unix ที่เรียกว่า docker และเพิ่มผู้ใช้ เมื่อ docker Daemon เริ่มต้นมันทำให้เป็นเจ้าของซ็อกเก็ต UNIX ที่อ่าน/เขียนได้โดย docker Group
คุณต้องติดตั้ง MongoDB 3.6 หรือใหม่กว่าสำหรับการใช้ DAGDA เนื่องจากใน MongoDB จะถูกเก็บไว้ทั้งช่องโหว่/การหาประโยชน์และผลการวิเคราะห์
หากคุณต้องการคำแนะนำสำหรับการติดตั้ง MongoDB ให้ดูที่หน้าวิธีการติดตั้ง MongoDB Community Edition
คุณยังสามารถเรียกใช้ MongoDB โดยใช้ Docker:
docker pull mongo
docker run -d -p 27017:27017 mongoคุณต้องติดตั้งส่วนหัวเคอร์เนลในระบบปฏิบัติการโฮสต์เนื่องจาก DAGDA ถูกรวมเข้ากับ FALCO สำหรับการตรวจสอบคอนเทนเนอร์ Docker ที่รันเพื่อตรวจจับกิจกรรมที่ผิดปกติ
โดยปกติจะสามารถทำได้ในการแจกแจงแบบ debian ด้วย: apt-get -y install linux-headers-$(uname -r)
หรือในการแจกแจงแบบ rhel: yum -y install kernel-devel-$(uname -r)
หลังจากนั้นเรียกใช้คำสั่ง /usr/lib/dkms/dkms_autoinstaller start ได้รับการแนะนำสำหรับการหลีกเลี่ยงการติดตามข้อผิดพลาด Sysdig Falco ถัดไป:
rmmod: ERROR: Module sysdig_probe is not currently loaded
สิ่งสำคัญที่ควรทราบ: ในการแจกแจงบางอย่างตรวจพบว่าจำเป็นต้องมีการติดตั้ง Sysdig ดังนั้นหากคุณต้องการคำแนะนำสำหรับการติดตั้ง Sysdig ให้ดูวิธีการติดตั้ง Sysdig สำหรับหน้า Linux
คุณต้องเรียกใช้ python3 dagda.py start สำหรับการเริ่มต้นเซิร์ฟเวอร์ DAGDA ดูคำสั่งย่อย เริ่มต้น ในหน้า Wiki สำหรับรายละเอียด
หลังจากเซิร์ฟเวอร์ DAGDA เริ่มต้นและก่อนการใช้งาน DAGDA CLI คุณต้องตั้งค่าตัวแปรสภาพแวดล้อมถัดไปตามที่คุณต้องการ:
export DAGDA_HOST= ' 127.0.0.1 '
export DAGDA_PORT=5000แม้ว่าในเอกสารการใช้งานนี้จะแสดงเฉพาะการใช้ CLI เท่านั้น DAGDA มี REST API สำหรับใช้ ดูหน้าเอกสาร REST API สำหรับรายละเอียด
สำหรับการดำเนินการครั้งแรกคุณต้องเติมช่องโหว่และการหาประโยชน์ในฐานข้อมูลโดยการรัน:
python3 dagda.py vuln --initคำสั่งก่อนหน้านี้อาจใช้เวลาหลายนาทีในการจบดังนั้นจงอดทน
หากคุณต้องการ repopulating ฐานข้อมูลของคุณสำหรับการอัปเดตด้วยช่องโหว่ใหม่และการหาประโยชน์คุณต้องรันคำสั่งก่อนหน้าใหม่เท่านั้น
นอกจากนี้คุณสามารถเรียกใช้การสืบค้นบนฐานข้อมูลส่วนบุคคลของคุณด้วย dagda.py vuln ตัวอย่างการใช้งานจะเป็นตัวอย่างต่อไป:
python3 dagda.py vuln --product openldap --product_version 2.2.20เอาต์พุตที่คาดหวังสำหรับแบบสอบถามก่อนหน้านี้แสดงด้านล่าง:
[
{
"CVE-2005-4442" : {
"cveid" : " CVE-2005-4442 " ,
"cvss_access_complexity" : " Low " ,
"cvss_access_vector" : " Local access " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " Complete " ,
"cvss_base" : 7.2 ,
"cvss_confidentiality_impact" : " Complete " ,
"cvss_exploit" : 3.9 ,
"cvss_impact" : 10.0 ,
"cvss_integrity_impact" : " Complete " ,
"cvss_vector" : [
" AV:L " ,
" AC:L " ,
" Au:N " ,
" C:C " ,
" I:C " ,
" A:C "
],
"cweid" : " CWE-0 " ,
"mod_date" : " 05-09-2008 " ,
"pub_date" : " 20-12-2005 " ,
"summary" : " Untrusted search path vulnerability in OpenLDAP before 2.2.28-r3 on Gentoo Linux allows local users in the portage group to gain privileges via a malicious shared object in the Portage temporary build directory, which is part of the RUNPATH. "
}
},
{
"CVE-2006-2754" : {
"cveid" : " CVE-2006-2754 " ,
"cvss_access_complexity" : " Low " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " None " ,
"cvss_base" : 5.0 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 10.0 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " Partial " ,
"cvss_vector" : [
" AV:N " ,
" AC:L " ,
" Au:N " ,
" C:N " ,
" I:P " ,
" A:N "
],
"cweid" : " CWE-0 " ,
"mod_date" : " 07-03-2011 " ,
"pub_date" : " 01-06-2006 " ,
"summary" : " Stack-based buffer overflow in st.c in slurpd for OpenLDAP before 2.3.22 might allow attackers to execute arbitrary code via a long hostname. "
}
},
{
"CVE-2006-5779" : {
"cveid" : " CVE-2006-5779 " ,
"cvss_access_complexity" : " Low " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " Partial " ,
"cvss_base" : 5.0 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 10.0 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " None " ,
"cvss_vector" : [
" AV:N " ,
" AC:L " ,
" Au:N " ,
" C:N " ,
" I:N " ,
" A:P "
],
"cweid" : " CWE-399 " ,
"mod_date" : " 26-08-2011 " ,
"pub_date" : " 07-11-2006 " ,
"summary" : " OpenLDAP before 2.3.29 allows remote attackers to cause a denial of service (daemon crash) via LDAP BIND requests with long authcid names, which triggers an assertion failure. "
}
},
{
"CVE-2006-6493" : {
"cveid" : " CVE-2006-6493 " ,
"cvss_access_complexity" : " High " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " Partial " ,
"cvss_base" : 5.1 ,
"cvss_confidentiality_impact" : " Partial " ,
"cvss_exploit" : 4.9 ,
"cvss_impact" : 6.4 ,
"cvss_integrity_impact" : " Partial " ,
"cvss_vector" : [
" AV:N " ,
" AC:H " ,
" Au:N " ,
" C:P " ,
" I:P " ,
" A:P "
],
"cweid" : " CWE-0 " ,
"mod_date" : " 07-03-2011 " ,
"pub_date" : " 12-12-2006 " ,
"summary" : " Buffer overflow in the krbv4_ldap_auth function in servers/slapd/kerberos.c in OpenLDAP 2.4.3 and earlier, when OpenLDAP is compiled with the --enable-kbind (Kerberos KBIND) option, allows remote attackers to execute arbitrary code via an LDAP bind request using the LDAP_AUTH_KRBV41 authentication method and long credential data. "
}
},
{
"CVE-2007-5707" : {
"cveid" : " CVE-2007-5707 " ,
"cvss_access_complexity" : " Medium " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " Complete " ,
"cvss_base" : 7.1 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 8.6 ,
"cvss_impact" : 6.9 ,
"cvss_integrity_impact" : " None " ,
"cvss_vector" : [
" AV:N " ,
" AC:M " ,
" Au:N " ,
" C:N " ,
" I:N " ,
" A:C "
],
"cweid" : " CWE-399 " ,
"mod_date" : " 07-03-2011 " ,
"pub_date" : " 30-10-2007 " ,
"summary" : " OpenLDAP before 2.3.39 allows remote attackers to cause a denial of service (slapd crash) via an LDAP request with a malformed objectClasses attribute. NOTE: this has been reported as a double free, but the reports are inconsistent. "
}
},
{
"CVE-2007-5708" : {
"cveid" : " CVE-2007-5708 " ,
"cvss_access_complexity" : " Medium " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " Complete " ,
"cvss_base" : 7.1 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 8.6 ,
"cvss_impact" : 6.9 ,
"cvss_integrity_impact" : " None " ,
"cvss_vector" : [
" AV:N " ,
" AC:M " ,
" Au:N " ,
" C:N " ,
" I:N " ,
" A:C "
],
"cweid" : " CWE-399 " ,
"mod_date" : " 07-03-2011 " ,
"pub_date" : " 30-10-2007 " ,
"summary" : " slapo-pcache (overlays/pcache.c) in slapd in OpenLDAP before 2.3.39, when running as a proxy-caching server, allocates memory using a malloc variant instead of calloc, which prevents an array from being initialized properly and might allow attackers to cause a denial of service (segmentation fault) via unknown vectors that prevent the array from being null terminated. "
}
},
{
"CVE-2011-4079" : {
"cveid" : " CVE-2011-4079 " ,
"cvss_access_complexity" : " Low " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " Requires single instance " ,
"cvss_availability_impact" : " Partial " ,
"cvss_base" : 4.0 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 8.0 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " None " ,
"cvss_vector" : [
" AV:N " ,
" AC:L " ,
" Au:S " ,
" C:N " ,
" I:N " ,
" A:P "
],
"cweid" : " CWE-189 " ,
"mod_date" : " 06-01-2017 " ,
"pub_date" : " 27-10-2011 " ,
"summary" : " Off-by-one error in the UTF8StringNormalize function in OpenLDAP 2.4.26 and earlier allows remote attackers to cause a denial of service (slapd crash) via a zero-length string that triggers a heap-based buffer overflow, as demonstrated using an empty postalAddressAttribute value in an LDIF entry. "
}
},
{
"BID-83610" : {
"bugtraq_id" : 83610 ,
"class" : " Failure to Handle Exceptional Conditions " ,
"cve" : [
" CVE-2006-6493 "
],
"local" : " no " ,
"remote" : " yes " ,
"title" : " OpenLDAP CVE-2006-6493 Remote Security Vulnerability "
}
},
{
"BID-83843" : {
"bugtraq_id" : 83843 ,
"class" : " Failure to Handle Exceptional Conditions " ,
"cve" : [
" CVE-2006-2754 "
],
"local" : " no " ,
"remote" : " yes " ,
"title" : " OpenLDAP CVE-2006-2754 Remote Security Vulnerability "
}
}
]สำหรับการรับข้อมูลทั้งหมดเกี่ยวกับ CVE ที่เฉพาะเจาะจงคุณต้องเรียกใช้คำสั่งถัดไป:
python3 dagda.py vuln --cve_info CVE-2009-2890เอาต์พุตที่คาดหวังสำหรับแบบสอบถามก่อนหน้านี้แสดงด้านล่าง:
[
{
"cveid" : " CVE-2009-2890 " ,
"cvss_access_complexity" : " Medium " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " None " ,
"cvss_base" : 4.3 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 8.6 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " Partial " ,
"cvss_vector" : [
" AV:N " ,
" AC:M " ,
" Au:N " ,
" C:N " ,
" I:P " ,
" A:N "
],
"cweid" : " CWE-79 " ,
"mod_date" : " 20-08-2009 " ,
"pub_date" : " 20-08-2009 " ,
"summary" : " Cross-site scripting (XSS) vulnerability in results.php in PHP Scripts Now Riddles allows remote attackers to inject arbitrary web script or HTML via the searchquery parameter. "
}
] หากคุณต้องการทราบรายละเอียดเพิ่มเติมเกี่ยวกับ dagda.py vuln ให้พิมพ์ python3 dagda.py vuln --help หรือดูคำสั่งย่อย Vuln ในหน้าวิกิ
ฐานข้อมูลเรียกว่า vuln_database และมี 10 คอลเลกชัน:
http://www.securityfocus.com/ ) - แหล่งที่มา biddb_downloaderในส่วนย่อยถัดไปทั้งการวิเคราะห์แบบคงที่ของช่องโหว่ที่รู้จักโทรจันไวรัสมัลแวร์และภัยคุกคามที่เป็นอันตรายอื่น ๆ
หนึ่งในเป้าหมายหลัก ของ DAGDA คือการวิเคราะห์ช่องโหว่ที่รู้จักโทรจันไวรัสมัลแวร์และภัยคุกคามที่เป็นอันตรายอื่น ๆ ในรูปภาพ/คอนเทนเนอร์นักเทียบท่าดังนั้นหากคุณต้องการทำการวิเคราะห์ภาพนักเทียบท่า/คอนเทนเนอร์คุณต้องพิมพ์:
python3 dagda.py check --docker_image jboss/wildflyดูรายละเอียดหน้า ตรวจสอบ คำสั่งย่อยสำหรับรายละเอียด
เอาต์พุตที่คาดหวังสำหรับคำสั่งก่อนหน้านี้จะเป็นคำสั่งถัดไป ในผลลัพธ์นี้การตอบสนอง DAGDA ด้วย id การวิเคราะห์
{
"id" : " 58667994ed253915723c50e7 " ,
"msg" : " Accepted the analysis of <jboss/wildfly> "
}นอกจากนี้หากคุณต้องการทำการวิเคราะห์แบบคงที่ในระยะไกลคุณสามารถใช้คำสั่งย่อย ของตัวแทน :
python3 dagda.py agent localhost:5000 -i jboss/wildfly เอาต์พุตที่คาดหวังสำหรับคำสั่งก่อนหน้านี้จะเป็นคำสั่งถัดไป ในผลลัพธ์นี้การตอบสนอง DAGDA ด้วย id การวิเคราะห์
{
"id" : " 58667994ed253915723c50e7 " ,
"image_name" : " jboss/wildfly "
}หากคุณต้องการตรวจสอบการวิเคราะห์นักเทียบท่าที่เป็นรูปธรรมคุณต้องพิมพ์:
python3 dagda.py history < DOCKER_IMAGE_NAME_HERE > --id < REPORT_ID_HERE > สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ dagda.py history พิมพ์ python3 dagda.py history --help หรือดูคำสั่งย่อย ประวัติ ในหน้า wiki
การวิเคราะห์อาจใช้เวลาหลายนาทีในการจบดังนั้นจงอดทน หากคุณพิมพ์คำสั่งก่อนหน้านี้เมื่อคุณพิมพ์ python3 dagda.py history jboss/wildfly --id 58667994ed253915723c50e7 เอาต์พุตที่คาดหวังจะปรากฏตามที่แสดงด้านล่าง
{
"id" : " 58667994ed253915723c50e7 " ,
"image_name" : " jboss/wildfly " ,
"status" : " Completed " ,
"timestamp" : " 2016-12-14 13:17:12.802486 " ,
"static_analysis" : {
"malware_binaries" : [
{
"file" : " /tmp/test/removal-tool.exe " ,
"malware" : " Worm.Sober "
},
{
"file" : " /tmp/test/error.hta " ,
"malware" : " VBS.Inor.D "
}
],
"os_packages" : {
"total_os_packages" : 182 ,
"vuln_os_packages" : 41 ,
"ok_os_packages" : 141 ,
"os_packages_details" : [
{
"product" : " sed " ,
"version" : " 4.2.2 " ,
"is_vulnerable" : false ,
"is_false_positive" : false ,
"vulnerabilities" : []
},
{
"product" : " grep " ,
"version" : " 2.20 " ,
"is_vulnerable" : true ,
"is_false_positive" : false ,
"vulnerabilities" : [
{
"CVE-2015-1345" : {
"cveid" : " CVE-2015-1345 " ,
"cvss_access_complexity" : " Low " ,
"cvss_access_vector" : " Local access " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " Partial " ,
"cvss_base" : 2.1 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 3.9 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " None " ,
"cvss_vector" : [
" AV:L " ,
" AC:L " ,
" Au:N " ,
" C:N " ,
" I:N " ,
" A:P "
],
"cweid" : " CWE-119 " ,
"mod_date" : " 23-12-2016 " ,
"pub_date" : " 12-02-2015 " ,
"summary" : " The bmexec_trans function in kwset.c in grep 2.19 through 2.21 allows local users to cause a denial of service (out-of-bounds heap read and crash) via crafted input when using the -F option. "
}
}
]
},
{
"product" : " lua " ,
"version" : " 5.1.4 " ,
"is_vulnerable" : true ,
"is_false_positive" : false ,
"vulnerabilities" : [
{
"CVE-2014-5461" : {
"cveid" : " CVE-2014-5461 " ,
"cvss_access_complexity" : " Low " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " Partial " ,
"cvss_base" : 5.0 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 10.0 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " None " ,
"cvss_vector" : [
" AV:N " ,
" AC:L " ,
" Au:N " ,
" C:N " ,
" I:N " ,
" A:P "
],
"cweid" : " CWE-119 " ,
"mod_date" : " 06-01-2017 " ,
"pub_date" : " 04-09-2014 " ,
"summary" : " Buffer overflow in the vararg functions in ldo.c in Lua 5.1 through 5.2.x before 5.2.3 allows context-dependent attackers to cause a denial of service (crash) via a small number of arguments to a function with a large number of fixed arguments. "
}
},
{
"BID-34237" : {
"bugtraq_id" : 34237 ,
"class" : " Unknown " ,
"cve" : [],
"local" : " no " ,
"remote" : " yes " ,
"title" : " Lua Unspecified Bytecode Verifier Security Vulnerability "
}
}
]
},
[ ... ]
, {
"product" : " sqlite " ,
"version" : " 3.7.17 " ,
"is_vulnerable" : false ,
"is_false_positive" : false ,
"vulnerabilities" : []
}
]
},
"prog_lang_dependencies" : {
"vuln_dependencies" : 9 ,
"dependencies_details" : {
"java" : [
{
"product" : " xalan-java " ,
"version" : " 2.5.2 " ,
"product_file_path" : " /opt/jboss/java/xalan.2.5.2.jar " ,
"is_vulnerable" : true ,
"is_false_positive" : false ,
"vulnerabilities" : [
{
"CVE-2014-0107" : {
"cveid" : " CVE-2014-0107 " ,
"cvss_access_complexity" : " Low " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " Partial " ,
"cvss_base" : 7.5 ,
"cvss_confidentiality_impact" : " Partial " ,
"cvss_exploit" : 10.0 ,
"cvss_impact" : 6.4 ,
"cvss_integrity_impact" : " Partial " ,
"cvss_vector" : [
" AV:N " ,
" AC:L " ,
" Au:N " ,
" C:P " ,
" I:P " ,
" A:P "
],
"cweid" : " CWE-264 " ,
"mod_date" : " 06-01-2017 " ,
"pub_date" : " 15-04-2014 " ,
"summary" : " The TransformerFactory in Apache Xalan-Java before 2.7.2 does not properly restrict access to certain properties when FEATURE_SECURE_PROCESSING is enabled, which allows remote attackers to bypass expected restrictions and load arbitrary classes or access external resources via a crafted (1) xalan:content-header, (2) xalan:entities, (3) xslt:content-header, or (4) xslt:entities property, or a Java property that is bound to the XSLT 1.0 system-property function. "
}
},
{
"BID-66397" : {
"bugtraq_id" : 66397 ,
"class" : " Input Validation Error " ,
"cve" : [
" CVE-2014-0107 "
],
"local" : " no " ,
"remote" : " yes " ,
"title" : " Apache Xalan-Java Library CVE-2014-0107 Security Bypass Vulnerability "
}
}
]
},
{
"product" : " jboss_wildfly_application_server " ,
"version" : " - " ,
"product_file_path" : " /opt/jboss/java/jboss_wildfly_application_server.jar " ,
"is_vulnerable" : true ,
"is_false_positive" : false ,
"vulnerabilities" : [
{
"CVE-2014-0018" : {
"cveid" : " CVE-2014-0018 " ,
"cvss_access_complexity" : " Medium " ,
"cvss_access_vector" : " Local access " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " None " ,
"cvss_base" : 1.9 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 3.4 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " Partial " ,
"cvss_vector" : [
" AV:L " ,
" AC:M " ,
" Au:N " ,
" C:N " ,
" I:P " ,
" A:N "
],
"cweid" : " CWE-264 " ,
"mod_date" : " 06-01-2017 " ,
"pub_date" : " 14-02-2014 " ,
"summary" : " Red Hat JBoss Enterprise Application Platform (JBEAP) 6.2.0 and JBoss WildFly Application Server, when run under a security manager, do not properly restrict access to the Modular Service Container (MSC) service registry, which allows local users to modify the server via a crafted deployment. "
}
}
]
},
[ ... ]
, {
"product" : " jboss_weld " ,
"version" : " 3.0.0 " ,
"product_file_path" : " /opt/jboss/java/jboss_weld.3.0.0.jar " ,
"is_vulnerable" : true ,
"is_false_positive" : false ,
"vulnerabilities" : [
{
"CVE-2014-8122" : {
"cveid" : " CVE-2014-8122 " ,
"cvss_access_complexity" : " Medium " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " None " ,
"cvss_base" : 4.3 ,
"cvss_confidentiality_impact" : " Partial " ,
"cvss_exploit" : 8.6 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " None " ,
"cvss_vector" : [
" AV:N " ,
" AC:M " ,
" Au:N " ,
" C:P " ,
" I:N " ,
" A:N "
],
"cweid" : " CWE-362 " ,
"mod_date" : " 13-05-2015 " ,
"pub_date" : " 13-02-2015 " ,
"summary" : " Race condition in JBoss Weld before 2.2.8 and 3.x before 3.0.0 Alpha3 allows remote attackers to obtain information from a previous conversation via vectors related to a stale thread state. "
}
}
]
}
],
"js" : [],
"nodejs" : [],
"php" : [],
"python" : [
{
"product" : " lxml " ,
"version" : " 1.0.1 " ,
"product_file_path" : " /opt/jboss/python/lxml.1.0.1.py " ,
"is_vulnerable" : true ,
"is_false_positive" : false ,
"vulnerabilities" : [
{
"CVE-2014-3146" : {
"cveid" : " CVE-2014-3146 " ,
"cvss_access_complexity" : " Medium " ,
"cvss_access_vector" : " Network " ,
"cvss_authentication" : " None required " ,
"cvss_availability_impact" : " None " ,
"cvss_base" : 4.3 ,
"cvss_confidentiality_impact" : " None " ,
"cvss_exploit" : 8.6 ,
"cvss_impact" : 2.9 ,
"cvss_integrity_impact" : " Partial " ,
"cvss_vector" : [
" AV:N " ,
" AC:M " ,
" Au:N " ,
" C:N " ,
" I:P " ,
" A:N "
],
"cweid" : " CWE-0 " ,
"mod_date" : " 14-04-2015 " ,
"pub_date" : " 14-05-2014 " ,
"summary" : " Incomplete blacklist vulnerability in the lxml.html.clean module in lxml before 3.3.5 allows remote attackers to conduct cross-site scripting (XSS) attacks via control characters in the link scheme to the clean_html function. "
}
}
]
}
],
"ruby" : []
}
}
}
}เป้าหมายหลักอีกประการหนึ่งของ DAGDA คือการตรวจสอบคอนเทนเนอร์ Docker Running เพื่อตรวจจับกิจกรรมที่ผิดปกติดังนั้นหากคุณต้องการทำการตรวจสอบผ่านคอนเทนเนอร์ Docker ที่กำลังทำงานอยู่คุณต้องพิมพ์:
python3 dagda.py monitor 69dbf26ab368 --startดูรายละเอียดของหน้าจอ มอนิเตอร์ คอมมิวนิสต์สำหรับรายละเอียด
ผลลัพธ์ที่คาดหวังดูเหมือนดังที่แสดงด้านล่าง:
{
"id" : " 586f7631ed25396a829baaf4 " ,
"image_name" : " jboss/wildfly " ,
"msg" : " Monitoring of docker container with id <69dbf26ab368> started "
}คุณสามารถหยุดการตรวจสอบเมื่อคุณต้องการหากคุณพิมพ์:
python3 dagda.py monitor 69dbf26ab368 --stopเอาต์พุตที่คาดหวังเมื่อคุณหยุดการตรวจสอบผ่านคอนเทนเนอร์ที่ทำงานดูเหมือนดังที่แสดงด้านล่าง:
{
"id" : " 586f7631ed25396a829baaf4 " ,
"image_name" : " jboss/wildfly " ,
"timestamp" : " 2017-01-06 10:49:21.212508 " ,
"status" : " Completed " ,
"runtime_analysis" : {
"container_id" : " 69dbf26ab368 " ,
"start_timestamp" : " 2017-01-06 10:49:21.212508 " ,
"stop_timestamp" : " 2017-01-06 10:50:16.343847 " ,
"anomalous_activities_detected" : {
"anomalous_counts_by_severity" : {
"Warning" : 2
},
"anomalous_activities_details" : [{
"output" : " 10:49:47.492517329: Warning Unexpected setuid call by non-sudo, non-root program (user=<NA> command=ping 8.8.8.8 uid=<NA>) container=thirsty_spence (id=69dbf26ab368) " ,
"priority" : " Warning " ,
"rule" : " Non sudo setuid " ,
"time" : " 2017-01-06 10:49:47.492516 "
}, {
"output" : " 10:49:53.181654702: Warning Unexpected setuid call by non-sudo, non-root program (user=<NA> command=ping 8.8.4.4 uid=<NA>) container=thirsty_spence (id=69dbf26ab368) " ,
"priority" : " Warning " ,
"rule" : " Non sudo setuid " ,
"time" : " 2017-01-06 10:49:53.181653 "
}]
}
}
}หากคุณต้องการตรวจสอบรายงานทั้งหมดของคุณให้ดูคำสั่ง ประวัติ
Dagda รวมถึงการรวบรวมเหตุการณ์แบบเรียลไทม์จาก Docker Daemon ดังนั้นหากคุณต้องการรับกิจกรรม Docker Daemon ทั้งหมดคุณต้องพิมพ์:
python3 dagda.py docker eventsผลลัพธ์ที่คาดหวังดูเหมือนดังที่แสดงด้านล่าง:
[
{
"Action" : " attach " ,
"Actor" : {
"Attributes" : {
"build-date" : " 20171128 " ,
"image" : " jboss/wildfly " ,
"license" : " GPLv2 " ,
"name" : " amazing_wilson " ,
"vendor" : " CentOS "
},
"ID" : " 73c5ed015df661ce799baa685a39c32125a47b71f3476e9d452adc381fb8114c "
},
"Type" : " container " ,
"from" : " jboss/wildfly " ,
"id" : " 73c5ed015df661ce799baa685a39c32125a47b71f3476e9d452adc381fb8114c " ,
"scope" : " local " ,
"status" : " attach " ,
"time" : 1517323482 ,
"timeNano" : 1517323482957358115
},
{
"Action" : " create " ,
"Actor" : {
"Attributes" : {
"build-date" : " 20171128 " ,
"image" : " jboss/wildfly " ,
"license" : " GPLv2 " ,
"name" : " amazing_wilson " ,
"vendor" : " CentOS "
},
"ID" : " 73c5ed015df661ce799baa685a39c32125a47b71f3476e9d452adc381fb8114c "
},
"Type" : " container " ,
"from" : " jboss/wildfly " ,
"id" : " 73c5ed015df661ce799baa685a39c32125a47b71f3476e9d452adc381fb8114c " ,
"scope" : " local " ,
"status" : " create " ,
"time" : 1517323482 ,
"timeNano" : 1517323482944595092
}
]หากคุณต้องการตรวจสอบตัวกรองที่อนุญาตทั้งหมดสำหรับคำสั่งนี้ให้ดูคำสั่ง Docker
ส่วนนี้อธิบายถึงการติดตั้ง DAGDA โดยใช้คอนเทนเนอร์ Docker รวมถึงฐานข้อมูล Mongo และคอนเทนเนอร์สำหรับ DAGDA โดยใช้ docker-compose ซ็อกเก็ต Docker ถูกแชร์กับคอนเทนเนอร์ DAGDA ดังนั้นจึงเป็นไปได้ที่จะตรวจสอบภาพนักเทียบท่าและคอนเทนเนอร์จากโฮสต์ที่มีการดำเนินการกับ docker-compose
ดำเนินการคำสั่งต่อไปนี้ในโฟลเดอร์รูทของ DAGDA จากนั้นเซิร์ฟเวอร์ DAGDA จะเริ่มฟังที่พอร์ต 5000:
docker-compose build
docker-compose up -dด้านล่างแผนภาพ 10,000 ฟุตเกี่ยวกับเวิร์กโฟลว์ภายใน DAGDA จะแสดงขึ้น:
โดยทั่วไปแล้ว Dagda ทำงานได้ดี แต่บางสถานการณ์อาจทำให้เกิดปัญหาได้ หากคุณได้รับปัญหาให้ตรวจสอบหน้าการแก้ไขปัญหาเพื่อแก้ไข
ดูหน้าบันทึกการเปลี่ยนแปลงสำหรับรายละเอียด
สำหรับข้อบกพร่องคำถามและการอภิปรายโปรดใช้ปัญหา GitHub หรือ ping ฉันบน Twitter (@3grander)