Library Security Scanning Aplikasi Java Menggunakan Owasp Dependency-Check

Intro

Terkadang ketika kita develop aplikasi, kita tidak sadar bahwa ada security issue di aplikasi kita. Dan bahkan bisa jadi security issue yang ada, bukan berasal dari aplikasi kita melainkan dari library yang kita gunakan. Contoh nyata adalah data breach yang terjadi di Equifax tahun 2017 dikarenakan adanya security vulnerability di library Apache Struts framework.

Apalagi ketika kita membuat suatu dengan aplikasi yang membutuhkan jaminan keamanan yang sangat tinggi, seperti aplikasi finansial atau pemerintahan. Namun seringkali proses security testing dilakukan sekali saja sebelum go-live, hal ini sangat sering terjadi terutama di aplikasi yang proses delivery-nya menggunakan metodologi tradisional, seperti waterfall.

Agak sedikit berbeda dengan di dunia Agile, dimana proses security testing, hardening dan penetration testing berjalan bersamaan dengan fase development. Hal ini disebut sebagai DevSecOps (Development-Security-Operation). Dimana Fase security testing dilakukan secara otomatis dari dalam pipeline, dengan suatu standard kualitas keamanan tertentu sehingga akan menghasilkan suatu aplikasi yang lebih aman.

Dan ada banyak sekali tools yang bisa kita gunakan untuk melakukan automated security testing, namun untuk sekarang kita fokus hanya ke satu tools saja yaitu Owasp Dependency-Check yang memiliki fungsi scanning library Java dan Javascript yang digunakan oleh aplikasi kita.

Concept

Owasp Dependecy-Check akan melakukan scan ke library java kita yang diimport lewat pom.xml, library tersebut akan dicompare dengan database CVE NVD (National Vulnerability Database) yang sudah disiapkan oleh NIST untuk dilihat apakah library kita memiliki vulnerability tertentu atau tidak. Dan kita bisa menggunakan suatu scale severity rate tertentu yang disebut sebagai CVSS Score, berdasarkan skala tersebut kita bisa menentukan apakah aplikasi kita layak naik ke production atau tidak.

Table CVSS berdasarkan severity rating-nya

How To

Cara paling sederhana adalah dengan run langsung Owasp Dependency-Check menggunakan Maven Plugin,

mvn org.owasp:dependency-check-maven:check -DfailBuildOnCVSS=8

Parameter failBuildOnCVSS berguna sebagai standard maksimum CVSS Score yang ada di library yang kita gunakan. Contoh adalah saya menggunakan value 8, sehingga aplikasi agak gagal dibuild apabila saya menggunakan library yang memiliki CVSS score lebih dari dan sama dengan 8 atau library dengan High Severity.

Contoh gagal build karena aplikasi memiliki library dengan severity High.

Untuk melihat laporan yang lebih detail, kita bisa buka folder ..\target di project kita, dan buka file dependency-check-report.html . Hasilnya kurang lebih seperti dibawah ini,

Project Detail
Penjelasan nomer CVE dan detail vulnerability

Ada satu lagi kelebihan dari Owasp Dependecy-Check plugin yang kita gunakan yaitu library ini bisa menyimpan data CVE yang sudah didownload sebelumnya ke local folder kita, sehingga kita tidak perlu download berkali-kali apabila kita ingin menjalankan command ini lagi.

Lokasi folder penyimpanan CVE database kita ada di Maven folder kita, yaitu .m2. Untuk laptop saya, lokasinya ada di C:\Users\myuser\.m2\repository\org\owasp\dependency-check-data\4.0\

local database yang digunakan adalah odc.mv.db

--

--

Muhammad Edwin
Development using RedHat Product. (This is an Unofficial Blog)

A RedHatter and Digital Nomad, with Jeans, Sneakers, Laptop and Coffees, anytime — anywhere.