Cara Mengatasi Kerentanan Rantai Pasokan Umum

Nov 29 2022
Dari perspektif siklus hidup pengembangan perangkat lunak (SDLC), keamanan adalah aspek bisnis yang paling penting, karena kerentanan keamanan menimbulkan risiko bagi organisasi besar dan menghadapi pengguna. Akibatnya, perusahaan banyak berinvestasi dalam menjadikan keamanan perangkat lunak sebagai prioritas.
Foto oleh Akinori UEMURA di Unsplash

Dari perspektif siklus hidup pengembangan perangkat lunak (SDLC), keamanan adalah aspek bisnis yang paling penting, karena kerentanan keamanan menimbulkan risiko bagi organisasi besar dan menghadapi pengguna. Akibatnya, perusahaan banyak berinvestasi dalam menjadikan keamanan perangkat lunak sebagai prioritas.

Menjadi perusahaan atau tim yang mengutamakan privasi dapat menambah manfaat luar biasa secara keseluruhan. Pelanggan menghargai fitur keamanan perangkat lunak yang dibangun dan ditingkatkan perusahaan, sama seperti kegunaannya. Tetapi mencapai tonggak sejarah membutuhkan pertimbangan yang cermat dengan implikasi yang ketat pada praktik dan pedoman keamanan SDLC terbaik.

SDLC berisi pos pemeriksaan keamanan untuk menjaga kerahasiaan, ketersediaan, dan integritas keseluruhan sistem dan data di dalamnya. SDLC yang digabungkan dengan model maturitas perangkat lunak OWASP (OWASP SAMM) dapat membantu merumuskan dan mengimplementasikan roadmap strategis di seluruh perusahaan untuk keamanan aplikasi.

Apa itu Rantai Pasokan Perangkat Lunak?

Rantai pasokan perangkat lunak adalah disiplin yang mencakup tim (baik internal maupun eksternal), metodologi, alat, dan praktik terbaik untuk menghadirkan artefak perangkat lunak secara langsung mulai dari desain hingga penerapan.

Belakangan ini, sebagian besar layanan dan pengalaman digital yang inovatif dan mengganggu dikembangkan menggunakan perangkat lunak sumber terbuka oleh tim jarak jauh.

Pustaka sumber terbuka menarik pengembang dengan fitur-fitur canggih mereka yang memungkinkan para insinyur meningkatkan pengembangan dengan mengurangi waktu ke pasar dan implikasi biaya.

Tetapi kelemahan dan komplikasi muncul dalam penggunaan perangkat lunak sumber terbuka karena kurangnya kontrol atas kode sumber dan rilis fitur dari waktu ke waktu dengan tambalan, dan mereka datang dengan risiko serangan rantai pasokan sumber terbuka .

Kode yang dikembangkan secara tidak memadai dengan rahasia yang di-hardcode dan infrastruktur yang dirancang secara longgar rentan terhadap serangan yang sering terjadi.

Kerentanan Paling Populer

Kerentanan perangkat lunak lazim di organisasi dari semua tingkatan. Perusahaan pemula lebih cenderung menjadi korban serangan seperti itu karena mereka berfokus untuk menghadirkan fitur baru ke pasar dalam tenggat waktu yang ketat. Sayangnya, eksposur ini tidak menjadi berita utama untuk membawa kesadaran kepada komunitas teknologi. Mari kita bahas beberapa peristiwa sejarah yang paling tersebar luas dan berdampak.

Pada suatu saat, berita terbaru tentang serangan terhadap SolarWinds mengguncang dunia teknologi. Acara tersebut menjadi contoh yang sangat baik dari bahaya praktik keamanan yang tidak memadai.

Malapetaka muncul ketika seorang pekerja magang gagal membuat kata sandi yang rumit. Penyerang masuk ke sistem SolarWinds melalui kombinasi kata sandi yang lemah menggunakan metode yang disebut penyemprotan kata sandi dan berhasil mendorong malware melalui pintu belakang ke semua perusahaan yang bergantung. Serangan rantai pasokan berbasis identitas yang memperbarui server pembaruan SolarWinds.

Menerapkan kebijakan kata sandi yang kuat pada sistem dengan lapisan keamanan tambahan seperti MFA dapat menghindari bencana.

Kejadian serupa terjadi di otoritas sertifikasi pemerintah Vietnam. Penyerang melewati firewall situs web dan memasukkan file penginstal tambahan ke aplikasi penginstal VGCA, yang merupakan aplikasi yang menghadap pelanggan yang ditawarkan oleh VGCA untuk penawaran tanda tangan digital.

Kegiatan keseluruhan berhasil karena penyerang menemukan celah dalam desain situs web karena desain keseluruhannya sedikit cacat. Serangan pintu belakang dapat dihindari dengan pembatasan firewall yang ketat, kontrol akses, dan izin istimewa.

Untuk contoh lain bagaimana kerentanan dapat melumpuhkan sistem, mari kita lihat Bitcoin. Bitcoin dapat diekspos dengan mudah dan dicuri jika penyedia layanan gagal menjaga pedoman keamanan.

Copay, dompet Bitcoin, mengalami serangan rantai pasokan saat aplikasi seluler yang menghosting dompet bitcoin mengalami bug. Bug dalam arsitektur muncul melalui kerentanan paket dari manajer paket simpul alat Javascript (NPM) open source. Versi yang disadap ini dipublikasikan dan memungkinkan peretas untuk mengubah aplikasi agar memuat kode yang telah direfaktorisasi dan mendapatkan akses ke pustaka JS.

Bug dapat dideteksi dan diperbaiki dengan alat pemindaian kerentanan di saluran penerapan dan kontrol versi.

Memindahkan Bagian untuk Mengelola Rantai Pasokan Perangkat Lunak

Cetak biru yang diartikulasikan dengan baik yang mengikuti dokumentasi yang solid, keamanan dunia maya, perbaikan risiko, dan praktik terbaik manajemen menghilangkan potensi kerentanan dan meningkatkan keamanan rantai pasokan perangkat lunak. Organisasi harus mengadaptasi prinsip-prinsip teknik "aman dengan desain" dan strategi bergeser ke kiri untuk membuat rantai alat DevSecOps yang komprehensif.

Gambar oleh Penulis

Tahap 1: Literasi Coding Aman

Terutama, perusahaan harus mengadopsi program pembelajaran dan pengembangan eksklusif tentang keamanan dan manajemen risiko. Saat tim pengembangan terburu-buru untuk meningkatkan keterampilan teknis mereka, tujuan bersama yang harus dimiliki perusahaan adalah cara untuk membantu pengembang menjadi juara keamanan.

Penilaian kerentanan aplikasi dan kursus keamanan diperlukan agar para insinyur tetap selaras dengan tujuan bisnis.

Tahap 2: Pemodelan Ancaman

Mengidentifikasi risiko keamanan jauh sebelum pengembangan dan operasi menyusul sangat penting. Tahap ini memastikan desain keseluruhan dan strategi pengembangan sejalan dengan standar keamanan organisasi.

Pemodelan ancaman memberi organisasi pendekatan terstruktur untuk mengidentifikasi, menganalisis, mengevaluasi, dan memitigasi risiko pada tahap awal pengembangan. Model ancaman menunjukkan janji tentang keamanan dengan memungkinkan pengembang dan arsitek berpikir dari sudut pandang penyerang, memungkinkan mereka untuk merencanakan dan merancang sistem yang aman.

<?xml version="1.0" encoding="utf-8"?>
<KnowledgeBase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <Manifest name="Basic threat modelling design" id="5d3b996b-bac2-8cf6-3b39-617bb67bf042" version="4.1.0.11" author="TwC MSEC" />
 <ThreatMetaData>
   <IsPriorityUsed>true</IsPriorityUsed>
   <IsStatusUsed>false</IsStatusUsed>
   <PropertiesMetaData>
     <ThreatMetaDatum>
       <Name>Title</Name>
       <Label>Title</Label>
       <HideFromUI>false</HideFromUI>
       <Values>
         <Value />
       </Values>
       <Id>5d3b996b-bac2-8cf6-3b39-617bb67bf042</Id>
       <AttributeType>0</AttributeType>
     </ThreatMetaDatum>
     <ThreatMetaDatum>
       <Name>UserThreatShortDescription</Name>
       <Label>Short Description</Label>
       <HideFromUI>true</HideFromUI>
       <Values>
         <Value>Threat modeling is critical and mandate phase in secure software development</Value>
       </Values>
       <Id>ac0f9ea8-aed5-4d95-4ce9-6787124d7b48</Id>
       <AttributeType>1</AttributeType>
     </ThreatMetaDatum>
     <ThreatMetaDatum>
       <Name>UserThreatDescription</Name>
       <Label>Description</Label>
       <HideFromUI>false</HideFromUI>
       <Values>
         <Value />
       </Values>
       <Id>5d3b996b-bac2-8cf6-3b39-617bb67bf042</Id>
       <AttributeType>0</AttributeType>
     </ThreatMetaDatum>
     <ThreatMetaDatum>
       <Name>Priority</Name>
       <Label>Priority</Label>
       <HideFromUI>true</HideFromUI>
       <Values>
         <Value>High</Value>
         <Value>Medium</Value>
         <Value>Low</Value>
       </Values>
       <Description>Priority</Description>
       <Id>ac0f9ea8-aed5-4d95-4ce9-617bb67bf042</Id>
       <AttributeType>1</AttributeType>
     </ThreatMetaDatum>
   </PropertiesMetaData>
 </ThreatMetaData>
 <GenericElements>
   <ElementType>
     <Name>Threat modeling Process</Name>
     <ID>GE.P</ID>
     <Description>General approach to define a threat model</Description>
     <ParentElement>ROOT</ParentElement>
     <Image>Image_ref</Image>
     <Hidden>false</Hidden>
     <Representation>Ellipse</Representation>
     <StrokeThickness>0</StrokeThickness>
     <ImageLocation>Centered</ImageLocation>
     <Attributes>
       <Attribute>
         <Id>002864b3-9a4e-4d21-8a4d-8aea1d2e3056</Id>
         <IsInherited>false</IsInherited>
         <IsOverrided>false</IsOverrided>
         <Name>codeType</Name>
         <DisplayName>Code Type</DisplayName>
         <Mode>Dynamic</Mode>
         <Type>List</Type>
         <Inheritance>Virtual</Inheritance>
         <AttributeValues>
           <Value>Not Selected</Value>
           <Value>Managed</Value>
           <Value>Unmanaged</Value>
         </AttributeValues>
       </Attribute>
     </Attributes>
   </ElementType>
 </StandardElements>
 </KnowledgeBase>

Kode harus diamanatkan untuk tinjauan kode oleh rekan-rekan. Mengaktifkan ulasan over-the-shoulder dan email pass-around memungkinkan tim pengembangan untuk mendeteksi bug dan cacat selama tahap awal pengembangan.

Penundaan dan kesalahan kerentanan dapat masuk ke dalam kode bahkan dengan pertimbangan cermat dan upaya manual. Kesalahan yang paling umum termasuk jika ada konstruksi pemrograman yang hilang, keseluruhan kode sesuai dengan standar keamanan, dan kode melewati pemeriksaan serat dan petunjuk jenis.

Tinjauan kode yang dibantu alat lebih sedikit rawan kesalahan dan mencegah risiko kerentanan. GitHub dapat terbukti menjadi alat yang andal dan efisien untuk audit kode dan ulasan kode saat bepergian, dengan kontrol versi sebagai keuntungan tambahan.

Tahap 4: Memindai melalui Alat Otomatis

Mengotomatiskan tinjauan kode sebelum digabungkan menjadi master adalah hal yang paling penting. Gagal melewati pemeriksaan yang ditentukan sebelumnya menyoroti masalah dalam kode dan memungkinkan umpan balik bagi pengembang untuk memperbaiki dan mengamankan basis kode secara keseluruhan.

WhiteSource untuk pengembang, Codacy, dan Codecov adalah alat peninjau otomatis yang tersedia melalui pasar GitHub untuk diintegrasikan dengan cepat ke dalam basis kode Anda dan mencapai persyaratan tumpukan teknologi. Alat-alat ini menggunakan pendekatan shift-kiri untuk pemindaian sumber terbuka dan pengindeksan semua Repo GitHub yang ada.

Tahap 5: Pemindaian Kode Statis dan Pengujian Keamanan

Mengotomatiskan debugging dan review kode sambil melewatkan eksekusi melalui pipeline dapat bermanfaat selama tahap build dan deployment. Alat otomatisasi pipa tingkat lanjut, seperti Jenkins, dimuat dengan beragam plugin ulasan kode.

Plugin tinjauan kode statis seperti FindBugs melakukan tinjauan dan analisis kode dengan menjalankan pemeriksaan dan logika yang telah ditentukan sebelumnya, mengembalikan file keluaran. Jenkins dapat mem-parsing file keluaran dari pekerjaan, menyorot kesalahan, dan membuat daftar peringatan yang ditemui dengan mengikuti pendekatan top-down di tingkat kode direktori dan menyajikan ringkasan mendetail dari keseluruhan analisis secara grafis.

Contoh kode:

trigger:
 branches:
   include:
   - feature
   - main
 paths:
   include:
   - src/*
   - tests/*

pool:
 Image: 'centos/latest'

jobs:
- job: codereview
 displayName: review and report

 steps:

 - checkout: self
   lfs: true

 - task: UsePythonVersion@0
   displayName: 'Set Python version to 3.9'
   inputs:
     versionSpec: '3.9'

 - script: pip3 install --user -r requirements.txt
   displayName: 'Installing required dependencies'

 - script: |
     python -m behave --junitxml=./validation_test-checks.xml
   displayName: 'Running behave tests'

 - task: PublishBehaveResults@1
   displayName: 'bumping out behave test results'
   condition: passOrFail()
   inputs:
     testResultsFiles: '**/validation_test-*.xml'
     testRunTitle: 'Publish behave test results for Python $(python.version)'

Kerentanan rantai pasokan perangkat lunak adalah binatang buas yang tidak dapat dihindari. Ketika diabaikan, mereka dapat menjatuhkan seluruh sistem yang berdampak pada bisnis dan reputasi. SDLC mencakup berbagai teknik dan perangkat untuk menjadikan keamanan sebagai tonggak utama perjalanan perangkat lunak.

Fase pengembangan keseluruhan harus mengikuti tahapan yang disorot di atas mulai dari literasi keamanan, pemodelan ancaman, tinjauan kode rekan, pemeriksaan kode otomatis, dan pemindaian kode statis dan pengujian keamanan.

Dari Infosec Writeups: Banyak yang muncul di Infosec setiap hari yang sulit untuk diikuti. Bergabunglah dengan buletin mingguan kami untuk mendapatkan semua tren Infosec terbaru dalam bentuk 5 artikel, 4 Thread, 3 video, 2 Repo dan alat GitHub, dan 1 peringatan pekerjaan GRATIS!