ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 146
Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 131
Abonament PDF

Abordări proactive pentru protejarea lanțului logistic al software-ului open-source împotriva atacurilor

Denis Rendler
Information Security Officer @ Accesa



PROGRAMARE


În lumea securității cibernetice, potențialele complexe amenințări ascunse în lanțul logistic al software-ului nu mai pot fi ignorate. Rețeaua extinsă și interconectată de biblioteci utilizate în software-ul de astăzi oferă o oportunitate distinctă pentru atacatorii rău intenționați de a exploata vulnerabilități, de a se infiltra în sisteme și de a provoca perturbări pe scară largă.

Pe măsură ce dezvoltatorii și organizațiile din întreaga lume se bazează din ce în ce mai mult pe componente open-source pentru a crea, implementa și întreține software-ul, asigurarea securității și integrității lanțului de aprovizionare al software-ului a devenit o preocupare fundamentală.

Deși software-ul open-source oferă numeroase beneficii, ca eficiența costurilor, flexibilitatea și adaptabilitatea, acesta prezintă și provocări specifice în protejarea lanțului logistic împotriva amenințărilor cibernetice. Cum prevalența acestui tip de atacuri este în creștere, în special vizând proiectele open-source, este esențial ca profesioniștii în securitate cibernetică să înțeleagă riscurile asociate și să dezvolte strategii eficiente pentru a consolida ecosistemul.

Într-un studiu din 2022 [1], Sonatype, o companie specializată în managementul lanțului logistic al software-ului, și-a împărtășit perspectiva asupra acestui tip de atacuri. În raportul lor, cercetătorii subliniază faptul că au detectat o creștere uluitoare de 742% a frecvenței atacurilor din 2019 până astăzi, cu o creștere remarcabilă de 633% având loc numai în 2022.

În acest articol, vom explora câteva exemple recente de atacuri și vom oferi îndrumări practice privind procesele și metodele de securizare a lanțului logistic al software-ului subliniind, în același timp, ideea de colaborare și implicare a comunității. Scopul este de a ne îmbogăți cunoștințele și instrumentele necesare pentru a crea un mediu open-source mai robust și mai sigur, protejând lanțul logistic al proiectelor noastre împotriva potențialelor amenințări.

Înțelegerea amenințărilor

În trecut, atacatorii au vizat, în principal, vulnerabilități cunoscute și divulgate public, care rămâneau nerezolvate o perioadă lungă de timp. Recent, aceștia și-au schimbat abordarea, alegând să introducă propriile vulnerabilități, folosindu-se de biblioteci open-source pentru a maximiza potențialul daunelor pe care le pot provoca sau pentru a obține acces la sisteme la care altfel ar fi fost imposibil de ajuns.

Trei dintre cele mai cunoscute atacuri asupra lanțului logistic din ultimii ani includ compromiterea aplicației SolarWinds Orion, care a afectat peste 18.000 de organizații la nivel mondial, apoi vulnerabilitatea librăriei Log4j din decembrie 2021, care continuă să afecteze proiectele Java până în prezent, iar mai recent, 3CX, unde compania de telecomunicații a căzut victimă unui atac, ca urmare a unei breșe de securitate în sistemul de build al altei companii.

Prin urmare, în domeniul continuu evoluționist al securității cibernetice, este esențial ca organizațiile și dezvoltatorii să fie conștienți de diversele amenințări care pot compromite un lanț logistic al software-ului.

Un pas cheie în consolidarea securității software-ului pe care ne bazăm este înțelegerea diferitelor tipuri de atacuri care îl vizează.

Trei vectori de atac răspândiți pe care îi vom analiza în acest articol sunt:

Atacuri de tip injectare de cod malicious

Folosind un atac de tip code injection, atacatorii introduc o secțiune de cod malicious într-o componentă autentică, care ulterior devine parte a produsului finit sau a infrastructurii folosite pentru un produs software. Consecințele unui astfel de atac pot include scurgeri de date, sisteme compromise sau chiar controlul total al sistemelor afectate.

În 2020, în atacul asupra aplicației SolarWinds Orion [2], adversarii au injectat o secvență de cod (backdoor) malițioasă, numită SUNBURST, care permitea atacatorilor accesul neautorizat pe sistemul pe care rula. Codul a fost ulterior semnat cu certificatul digital al companiei, sugerând că mediul de build a software-ului a fost punctul de intrare inițial. Printr-o actualizare a software-ului, codul modificat a permis atacatorilor să compromită sistemele a peste 18.000 de organizații din întreaga lume, inclusiv organizații guvernamentale și companii private.

În martie 2021, proiectul PHP a suferit o încercare de a injecta cod malițios în codul său sursă [3]. Deși există numeroase exemple de astfel de atacuri care vizează aplicațiile web dezvoltate folosind limbajul PHP - în principal din cauza arhitecturii sale - atacatorii au încercat să introducă cod vulnerabil direct în codul sursă al interpretorului limbajului. Atacatorii, prin compromiterea serverul git.php.net, au trimis două commituri malicious în repository-ul PHP. Aceste commituri au fost deghizate ca fiind două corecții de text minore, însă atacatorul a introdus și o secvență de cod care îi permitea accesul neautorizat.

Secvența de cod introdusă ar fi permis unui atacator să execute cod arbitrar pe un server web care rulează versiunea compromisă a interpretorului PHP, prin trimiterea unei solicitări special concepute. Cu toate acestea, datorită vigilenței comunității, echipa de dezvoltare a PHP a identificat rapid commiturile problematice și le-a șters înainte ca vreo versiune oficială a PHP care le conținea să poată fi lansată.

Atacuri asupra dependențelor

În atacuri asupra dependențelor, accentul se pune pe un pachet software care funcționează ca o dependență pentru o aplicație mai mare sau alte biblioteci. Prin manipularea unei biblioteci larg utilizate, atacatorii au potențial să afecteze numeroase aplicații care depind de acea bibliotecă în particular, amplificând consecințele atacului.

Trei metode frecvent observate pentru executarea acestui tip de atac includ: typosquatting, brandjacking și upstream library compromise.

În 2020, în timpul unui studiu asupra atacurilor de tip typosquatting [4], ReversingLabs a descoperit peste 700 de proiecte Ruby gem compromise - pachete create cu limbajul de programare Ruby - care au fost încărcate în doar câteva zile.

Pe măsură ce motoarele Large Language Model (LLM), în special ChatGPT, au câștigat recent popularitate, atacatorii cu diverse interese au folosit un atac de brandjacking pentru a ținti utilizatorii ChatGPT, promovând o extensie Chrome [5], care simulează funcționalitatea extensiei originale, în timp ce preia controlul asupra conturilor din rețelele sociale ale victimelor.

În decembrie 2021, a fost descoperită o vulnerabilitate semnificativă în biblioteca Log4j (CVE-2021-44228), o bibliotecă Java foarte utilizată pentru a scrie loguri către diferite sisteme, care afectează, în special, versiunile Log4j 2.0 până la 2.14.1. Această vulnerabilitate este cunoscută sub numele de „Log4Shell”.

Vulnerabilitatea din librăria Log4j a avut un impact uriaș, transformând-o într-o amenințare pentru numeroase sisteme. Exploatarea vulnerabilității a fost relativ simplă pentru atacatori, având consecințe severe, cum ar fi controlul complet asupra sistemului pe care rula acest cod. O practică susținută de comunitățile de programatori, a folosirii unor versiuni specifice în proiectele software, deși destinată menținerii stabilității, a îngreunat actualizările la versiunile Log4j reparate. În plus, procesul de aplicare a corecțiilor necesita adesea verificări de compatibilitate cu alte biblioteci și componente, ceea ce a adăugat complexitate și a prelungit impactul vulnerabilității.

Atacuri asupra uneltelor de build

A treia categorie de atacuri abordată în acest articol vizează sistemele automate de build, care se ocupă independent de procesul de build al unei aplicații. Uneltele precum Jenkins, GitlabCI/CD, TeamCity și altele sunt extrem de atractive pentru atacatori, deoarece aceste sisteme pot oferi acces la chei secrete, componente suplimentare de infrastructură, cod proprietar și altele.

În atacurile asupra uneltelor de build, adversarii exploatează vulnerabilități, manipulând procesul de build pentru a produce artefacte software dăunătoare. Aceste artefacte corupte pot fi apoi distribuite utilizatorilor, care rămân dezinformați cu privire la codul modificat. Deoarece uneltele de build sunt adesea luate ca atare, acestea pot prezenta o țintă atractivă pentru atacatorii care caută să submineze integritatea unui proiect software.

La sfârșitul lunii martie 2023, s-a descoperit că 3CX, o companie de telecomunicații care oferă comunicații VoIP, a fost ținta unui atac în lanțul logistic prin intermediul sistemului său intern de build. O versiune alterată a clientului de desktop 3CX Voice Over Internet Protocol (VOIP), care conținea un troian ascuns, introdus printr-un atac asupra lanțului logistic al aplicației și era semnată digital folosind certificatul organizației, a fost folosită pentru a ținti clienții companiei.

Problema pare să fie una dintre bibliotecile incluse pe care le-am compilat în aplicația Windows Electron prin intermediul GIT.” explică Pierre Jourdan, CISO al 3CX, într-o postare pe blogul companiei [6].

Consolidarea lanțului logistic al software-ului

Conceptul Zero-Trust este o strategie de securitate cibernetică bazată pe principiul „niciodată să nu ai încredere, întotdeauna să verifici”. Acest concept presupune că fiecare utilizator, dispozitiv sau rețea reprezintă o potențială amenințare, indiferent dacă se află în interiorul sau în exteriorul perimetrului unei organizații. Această abordare necesită ca toate cererile de acces la resurse să fie autentificate, autorizate și criptate înainte de a fi acordate, limitând astfel suprafața de atac potențială.

O abordare a securității pe diferite niveluri, cunoscută și sub numele de „defense in depth”, implică implementarea mai multor măsuri de securitate la diferite niveluri în infrastructura unei organizații. Acest concept asigură că, dacă un nivel este compromis, celelalte pot continua să ofere protecție.

În contextul securității lanțului logistic al software-ului, o abordare zero-trust combinată cu o strategie de securitate pe niveluri diferite poate crea un mediu robust și foarte sigur pentru proiectele noastre.

Acest mediu robust poate fi realizat prin implementarea și integrarea proceselor descrise mai jos.

Practici de dezvoltare securizată

Primul pas este implementarea unor practici de dezvoltare securizate, cum ar fi utilizarea unor mecanisme puternice de autentificare, menținerea unor canale de comunicare securizate și utilizarea commiturilor și lansărilor produselor software folosind semnături digitale. Astfel, putem reduce riscul atacurilor asupra lanțului logistic, devenind mai dificil pentru atacatori să compromită identitatea unor contribuitori de încredere sau infrastructura proiectului sau să manipuleze procesul de dezvoltare.

Ca programatori, ar trebui să adoptăm principiile folosirii rolului cu cel mai restrâns nivel de acces, care presupune acordarea minimului necesar de acces și permisiuni utilizatorilor, proceselor și sistemelor. Această abordare ne poate ajuta să limităm potențialele daunele cauzate de un sistem sau un cont compromis, reducând astfel suprafața de atac.

În plus, prin includerea unor practici de securitate precum modelarea amenințărilor, standardele de codare securizate și instruirea regulată în domeniul securității, putem îmbunătăți și mai mult rezistența proiectelor noastre la atacurile din lanțul logistic. Aceste practici permit dezvoltatorilor să anticipeze potențialele amenințări, să implementeze tehnici de codare securizate și să rămână informați despre cele mai recente metode și vectori de atac și tendințe în securitate.

Revizuirea și auditarea codului

Una dintre cele mai eficiente metode de a ne proteja împotriva atacurilor asupra lanțului logistic este să revizuim și să audităm riguros modificările de cod. Acest proces ar trebui să implice mai mulți programatori care posedă cunoștințe aprofundate despre codul sursă al proiectului și dependențele sale. Prin examinarea atentă a modificărilor și validarea autenticității lor, putem reduce semnificativ probabilitatea ca o secvență de cod rău intenționat să pătrundă în lanțul logistic al proiectului.

Instrumente automate, precum cele de analiză statică a codului (SAST) și analiză dinamică (DAST), pot fi utilizate pentru a ajuta la procesul de revizuire a codului. Aceste instrumente pot contribui să identificăm potențiale vulnerabilități, oferindu-ne informații valoroase despre comportamentul aplicației, erorile de codare sau modelele de cod suspecte care ar fi putut fi trecute cu vederea în timpul unui code review manual. În plus, integrarea testării - din punct de vedere al securității în pipeline-ul de integrare și livrare continuă (CI/CD) - poate ajuta la identificarea potențialelor problemele în etapele mai timpurii ale procesului de dezvoltare.

Managementul vulnerabilităților

Managementul proactiv al vulnerabilităților este esențial pentru detectarea și remedierea punctelor slabe din proiectele noastre software. Prin scanarea regulată a vulnerabilităților din cod și dependențe, putem identifica și aborda problemele înainte ca acestea să poată fi exploatate. În plus, participând activ în comunitățile open-source și împărtășind informații despre vulnerabilități, putem contribui la întărirea securității generale a ecosistemului. Această colaborare nu numai că promovează un sentiment de responsabilitate comună, dar asigură și diseminarea pe scară largă a cunoștințelor și celor mai bune practici.

De ajutor este și să stabilim procese pentru urmărirea și aplicarea actualizărilor de securitate și patchurilor în software. Menținerea software-ului actualizat este un aspect esențial al managementului vulnerabilităților, deoarece ajută la minimizarea perioadei în care atacatorii pot exploata vulnerabilități cunoscute. Pentru a ne consolida și mai mult apărarea, ar trebui să luăm în considerare implementarea de instrumente și platforme care oferă capabilități automate de detectare și remediere a vulnerabilităților, precum și o prezentare generală a limitărilor și obligațiilor licențelor open-source, găsite prin soluții precum analiza compoziției software-ului (SCA).

Managementul riscului în lanțul logistic

Incorporarea strategiilor de management al riscului din lanțul logistic în planul de securitate al unei organizații poate ajuta la identificarea și diminuarea potențialelor amenințări. Acest lucru poate include evaluarea încrederii în terți furnizori, monitorizarea posturii de securitate a dependențelor și stabilirea planurilor de acțiune în cazul unei compromiteri.

De asemenea, ar trebui să luăm în considerare implementarea listei de materiale software (SBoM) pentru a documenta și urmări componentele incluse în stackul nostru tehnologic. SBoM-urile oferă o viziune cuprinzătoare asupra dependențelor unei aplicații, permițând organizațiilor să evalueze riscurile potențiale asociate cu fiecare componentă și să asigure aplicarea la timp a actualizărilor de securitate.

Un alt aspect crucial al managementului riscului în lanțul logistic îl reprezintă efectuarea unor evaluări regulate ale riscului, care pot ajuta organizațiile să identifice vulnerabilități potențiale și să dezvolte strategii adecvate de atenuare. Aceste evaluări ar trebui să ia în considerare factori precum importanța fiecărei componente, complexitatea stackului software și impactul potențial al unei afectări ale operațiunilor și reputației organizației.

Educație și formare

Este esențial să educăm toți membrii echipei de dezvoltare cât și alți membri direct implicați în cadrul proiectului cu privire la riscurile asociate cu atacurile asupra lanțului logistic al software-ului open-source și cele mai bune practici pentru diminuarea acestor riscuri. Creșterea gradului de conștientizare a potențialelor pericole și încurajarea adoptării unor practici de dezvoltare securizate pot ajuta organizațiile să cultive o cultură a securității care să protejeze ecosistemul lor software de atacuri asupra lanțului logistic.

Sesiuni de formare regulate, ateliere de lucru și resurse online pot fi folosite pentru a ne asigura că toți membrii echipei sunt familiarizați cu cele mai recente practici, instrumente și tehnici de securitate. Prin cultivarea unei ideologii axate pe securitate în întreaga organizație, devine mai ușor să identificăm și să abordăm riscurile potențiale înainte de a escalada în incidente de amploare.

Concluzii

Lanțul logistic al unui proiect software prezintă un set unic de provocări și riscuri, dar cu o înțelegere temeinică a vectorilor de atac și implementarea unor măsuri de securitate robuste, putem lucra pentru a ne apăra împotriva potențialelor amenințărilor. Acordând prioritate revizuirii temeinice a codului, gestionării vulnerabilităților, practicilor de dezvoltare securizate, gestionării riscurilor lanțului logistic și instruirii echipei, putem cultiva un ecosistem mai sigur și rezistent.

În fața amenințărilor cibernetice continue, este esențial ca organizațiile și indivizii să rămână vigilenți, flexibili și proactivi în eforturile lor de a proteja integritatea și securitatea software-ului open-source utilizat în lanțul lor logistic. Colaborând precum o comunitate, putem combina experiența, resursele și cunoștințele noastre pentru a crea un ecosistem open-source mai sigur și mai securizat pentru toți.

Pe măsură ce proiectele open-source continuă să câștige avânt și tot mai multe organizații adoptă beneficiile colaborării deschise și inovării, este imperativ să rămânem dedicați asigurării securității și integrității lanțului logistic al software-ului open-source. Cu apariția unor noi vectori de atac și miza ridicată mai mult ca oricând, vigilența și angajamentul colectiv față de bunele practici sunt esențiale. Prin informare, implicare și o abordare proactivă în materie de securitate, putem contribui la modelarea unui viitor mai sigur pentru comunitatea open-source și nenumăratele organizații și persoane care depind de ea.

Concluzionăm că provocările prezentate de atacurile asupra lanțului logistic al software-ului open-source sunt complexe și nuanțate, dar nu insurmontabile. Prin înțelegerea naturii acestor atacuri și adoptarea unei abordări proactive în ceea ce privește securitatea, putem diminua riscurile și proteja contribuțiile valoroase ale comunității open-source.

References:

  1. https://www.sonatype.com/state-of-the-software-supply-chain/open-source-supply-demand-security

  2. https://www.solarwinds.com/sa-overview/securityadvisory

  3. https://news-web.php.net/php.internals/113838

  4. https://www.bleepingcomputer.com/news/security/phps-git-server-hacked-to-add-backdoors-to-php-source-code/

  5. https://thehackernews.com/2020/04/rubygem-typosquatting-malware.html

  6. https://www.bleepingcomputer.com/news/security/facebook-accounts-hijacked-by-new-malicious-chatgpt-chrome-extension/

  7. https://www.3cx.com/blog/news/desktopapp-security-alert/

NUMĂRUL 145 - Microservices

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects