SCA Software Compositions Analysis (SCA) With Trivy

Introduction

Software composition analysis (SCA) adalah proses untuk mengidentifikasi dan mengelola komponen open-source dalam aplikasi. SCA membantu dalam memahami elemen-elemen yang menyusun aplikasi (seperti library atau framework) dan memastikan bahwa mereka tidak memiliki kerentanan atau masalah lisensi yang bisa menimbulkan risiko.

Manfaat utama SCA meliputi:

  1. Keamanan: Mengidentifikasi kerentanan keamanan dalam komponen open-source yang digunakan dalam aplikasi.
  2. Kepatuhan Lisensi: Memastikan bahwa penggunaan komponen open-source sesuai dengan lisensi mereka dan tidak menimbulkan risiko hukum.
  3. Manajemen Risiko: Memungkinkan pengembang untuk mengelola risiko terkait penggunaan komponen open-source dengan lebih efektif.
  4. Transparansi: Memberikan visibilitas yang lebih baik terhadap komposisi aplikasi, sehingga memudahkan dalam pemeliharaan dan peningkatan.

SCA biasanya diintegrasikan dalam pipeline DevSecOps untuk memastikan bahwa aplikasi aman, terjaga keandalannya, dan mematuhi peraturan sebelum dirilis.

Baca Artikel Sebelumnya:

Tools :

Ada 2 hal yang akan dibahas yaitu tentang cara scan di local dan juga mengintegrasikanya kedalam Pipeline Jenkins berikut ini tahapanya :

1. Install Trivy on Local & Test Run


brew install aquasecurity/trivy/trivy

  • Masuk ke folder aplikasi kita yang akan di scan Dockernya, disini saya mempunya file Dockerfile, yang dimana itu adalah tujuan saya untuk melakukan scanning
# FROM node:6-stretch

FROM node:18.13.0

RUN mkdir /usr/src/goof

RUN mkdir /tmp/extracted_files

COPY . /usr/src/goof

WORKDIR /usr/src/goof

RUN npm install

EXPOSE 3001

EXPOSE 9229

ENTRYPOINT ["npm", "start"]

trivy config ./Dockerfile

  • Hasil scanning adalah sebagai berikut :

  • Trivy juga bukan hanya bisa scan Dockerfile, tapi bisa scan ./ file directory kita dan juga image docker lainya seperti berikut:

trivy image nginx:latest

trivy filesystem ./location-file-dir

3. Integrate on Pipeline

  • Dan selanjutnya adalah kita integrasikan Trivy ini kedalam pipeline, yang dimana triviy adalah salah satu tools SCA, dan disini sekali lagi kita fokus untuk scan Dockerfilenya.
  • Update Jenkinsfile
stage('SCA Trivy Scan Dockerfile') {
            agent {
              docker {
                  image 'aquasec/trivy:latest'
                  args '-u root --network host --entrypoint='
              }
            }
            steps {
                catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
                    sh 'trivy config Dockerfile --exit-code=1 --format json > trivy-scan-dockerfile-report.json'
                }
                sh 'cat trivy-scan-dockerfile-report.json'
                archiveArtifacts artifacts: 'trivy-scan-dockerfile-report.json'
            }

Note: untuk repository saya masih menggunakan / melanjutkan repo yang di artikel sebelumnya, atau kalian bisa clone reponya dari snyk berikut ini https://github.com/snyk/snyk-goof

  • Tinggal Commit & push maka kita akan lihat hasil dari pipeline stage Trivy tersebut di Jenkins

Secret-scanning & SCA gagal, dan bisa kita lihat kekurangan apa dan apa yang harus kita tambah dari archive log tesebut

Tinggal kita fixing setelah menemuka Vulnerability tersebut.

4. After Fixing

  • Commit & Push hasil fixing

  • Hasil pipeline terbaru, adapun secret scanning merah tapi masih bisa melanjutkan stage selanjutnya dikarenakan itu adalah false positive

Dockerfile siap digunakan, dan dengan adanya integrasi Pipeline akan terus berulang

Leave a Reply

Your email address will not be published. Required fields are marked *