Strategii pentru lanțul de aprovizionare software pentru a opri atacurile de confuzie în dependență

Strategii pentru lanțul de aprovizionare software pentru a opri atacurile de confuzie în dependență

Software Supply Chain Strategies to Parry Dependency Confusion Attacks PlatoBlockchain Data Intelligence. Vertical Search. Ai.

“What’s in a name? That which we call a rose By any other name would smell as sweet.” When Shakespeare wrote these words (Romeo and Juliet, Act 2, Scene 2) in 1596, he was saying that a name is just a convention. It has no intrinsic meaning. Juliet loves Romeo for who he is, not for his name.

But without knowing it, Shakespeare was also describing dependency confusion attacks.

Confuzia de dependență este atunci când pachetele pe care le utilizați în codul dvs. nu sunt ale dvs. Au același nume, dar nu codul tău rulează în producție. Același nume, dar un pachet miroase a trandafir, iar celălalt... pute.

Recent research reports estimate that 41% to 49% of organizations are at risk for dependency confusion attacks. New research from OX Security shows that when an organization is at risk for a dependency confusion attack, 73% of its assets are vulnerable. The research focused on midsize and large organizations (1K+, 8K+, 80K+ employees) across a wide range of sectors — finance, gaming, technology, and media — and found the risk in every sector across organizations of all sizes. The research also found that almost all applications with more than 1 billion users are using dependencies that are vulnerable to dependency confusion.

Acest articol își propune să vă ajute să înțelegeți confuzia dependenței și cum să o preveniți.

Dublu dublu

Dependencies (also called packages) are the building blocks of your software. Typically these pieces of software, whether developed by entire communities or within a company, perform a common and necessary task.

Package managers are frequently used to install dependencies and keep them updated. They scan public and private registries for the name of the package and, all other things being equal, select the highest version number. Attackers take advantage of this by placing a “dummy” package on the public registry with the same name but higher version.

When a package manager comes across two identical packages, one in a public registry and one in a private registry, it causes confusion — hence the name “dependency confusion.” Since the two packages are identical, the manager will automatically choose to install the one with a higher version - in this case, the attacker’s malicious package.

Acest lucru oferă piratatorilor o ușă din spate în software-ul dvs. Din acest punct, ei pot executa încălcări ale datelor, pot efectua furturi de proprietate intelectuală și pot compromite în alt mod lanțul de aprovizionare a software-ului. De asemenea, pot introduce încălcări ale conformității care vor declanșa sancțiuni severe de reglementare.

Muncă și necazuri

Există diferite abordări ale unui atac de confuzie de dependență.

  • Spațierea numelor. Prin încărcarea unei biblioteci de software rău intenționat într-un registru public - cum ar fi Indexul pachetelor Python (PyPI) sau JavaScript registru npm - acesta este numit asemănător la o bibliotecă de încredere, utilizată intern, sistemele care omit o verificare a spațiului de nume/URL sau nu forțează preluarea dintr-un registru privat pot introduce din greșeală codul rău intenționat. The incident recent de confuzie privind dependența PyTorch este un astfel de exemplu.
  • Falsificarea DNS. Folosind o tehnică precum falsificarea DNS, sistemele pot fi direcționate să extragă dependențe din depozitele rău intenționate în timp ce afișează ceea ce arată ca URL-uri/căi interne legitime.
  • Scripting. By modifying build/install scripts or continuous integration/continuous delivery (CI/CD) pipeline configurations, systems can be tricked into downloading software dependencies from a malicious source rather than a local repository.

Things Done Well and With a Care

Pentru a vă proteja împotriva confuziei legate de dependență, instituiți aceste practici.

  • Setați politici în managerul de pachete. Permiteți managerilor de pachete să acorde prioritate unui pachet public față de un pachet privat.
  • Includeți întotdeauna un fișier .npmrc. Dacă utilizați popularul NPM ca manager de pachete, includeți întotdeauna un fișier .npmrc care specifică unde să preluați pachetele în cadrul anumitor organizații.
  • Rezervați numele pachetului într-un registru public. O altă modalitate de a vă proteja împotriva atacurilor de confuzie de dependență este de a rezerva numele pachetului într-un registru public, astfel încât piratatorii să nu îl poată folosi și, prin urmare, să nu poată „păcăli” managerul de pachete pentru a instala un pachet rău intenționat.

Pentru a proteja pe deplin împotriva atacurilor de confuzie de dependență, organizațiile ar trebui să folosească întotdeauna sfere de organizare pentru toate pachetele interne, chiar și atunci când publicați în registrul dvs. intern. Domeniile organizației ar trebui, de asemenea, înregistrate la registrul public al NPM, prevenind astfel oricui să deturneze domeniul de aplicare și să profite de confuzie.

Numele pachetelor ar trebui, de asemenea, înregistrate public. Dacă o organizație folosește popularul PIP ca manager de pachete pentru dependențele Python, de exemplu, ar trebui să creeze pachete interne cu un sufix strict care să fie recunoscut și să funcționeze în toate proiectele. Încărcați un pachet gol cu ​​același nume în registrul public PyPI ca substituent.

Un alt motiv pentru a rezerva numele pachetului într-un registru public este că, dacă altcineva îl rezervă (în mod rău intenționat sau nu), dezvoltatorii vor trebui să schimbe toate numele pachetelor din registrul privat cu unul care nu a fost încă rezervat în registrul public. Acesta poate fi un proces lung și obositor.

Este important să rețineți că nu toate registrele de pachete permit utilizatorilor să rezerve nume de pachete, așa că asigurați-vă că găsiți unul care o face.

Ieșire, urmărit de un urs

Atacurile de confuzie legate de dependență reprezintă o amenințare serioasă și iminentă la adresa securității cibernetice pentru organizațiile la nivel global. Aproximativ jumătate din toate organizațiile sunt expuse riscului și 73% din activele acestor organizații sunt expuse. Pentru a contracara această amenințare în creștere, organizațiile trebuie să implementeze măsuri preventive robuste și să adopte cele mai bune practici de securitate cibernetică.

Shakespeare’s roses may have presaged the risk of dependency confusion attacks by hundreds of years, but another quote from the Bard may hold some wisdom for protecting against them: “Let every eye negotiate for itself and trust no agent.” (Much Ado About Nothing, Act 2, Scene 1)

Timestamp-ul:

Mai mult de la Lectură întunecată