JFrog untersucht Sicherheitsrisiko „Manifest Confusion“ im npm-Ökosystem

logo-jfrog

Ein potenzielles Sicherheitsrisiko im npm-Ökosystem, bekannt als „Manifest Confusion“, wurde kürzlich in einem Blogbeitrag von Darcy Clarke, einem ehemaligen Staff Engineering Manager bei GitHub, thematisiert. Die Security Researcher von JFrog erklären im Folgenden, worum es bei diesem Problem geht und was es für Artifactory-Nutzer bedeuten könnte.

Was ist „Manifest Confusion“?

Die Bezeichnung bezieht sich darauf, dass im npm-Ökosystem das Manifest eines Pakets und sein .tar-Archiv unabhängig voneinander veröffentlicht werden. Sie werden niemals vollständig validiert und voneinander abgegrenzt, was potenziellen Angreifern ermöglicht, gefälschte Metadaten und Dependencys zu deklarieren und dabei die tatsächlichen und möglicherweise schädlichen Pakete im Tarball zu verbergen, ohne dass der Benutzer davon weiß. Dieses Problem beschränkt sich nicht nur auf das npm-Registry, sondern betrifft auch alle Drittanbieter-Tools oder Plattformen, die Metadaten aus dem öffentlichen npm-Registry beziehen.

Inwiefern ist JFrog Artifactory von diesem Problem betroffen?

Artifactory bietet drei Haupttypen von npm-Repositorys: lokal, remote und virtuell. Lokale Repositorys bleiben von diesem Problem verschont, jedoch können remote und virtuelle Repositorys betroffen sein. Lokale Repositorys werden in der Regel für On-Premise-Pakete verwendet, während remote Repositorys dazu dienen, Paket-Dependencys aus öffentlichen Repositorys zu proxyen und zu cachen. Virtuelle Repositorys verbinden für eine einfachere Nutzung sowohl lokale als auch remote Repositorys an einem zentralen Zugriffspunkt.

Lokale Repositorys sind nicht betroffen

Nutzer der lokalen npm-Repositorys von Artifactory sind von dieser Sicherheitslücke nicht betroffen, da jedes Paket entsprechend seiner tatsächlichen package.json-Informationen indexiert und gespeichert wird – und nicht basierend auf den Metadaten des Manifest-Files. Dadurch werden Paketnamen und -versionen gemäß dem tatsächlichen Inhalt gespeichert, wodurch das Herunterladen von unerwünschten Paketen unter falschen Namen verhindert wird. Versuche, den gefälschten Paketnamen zu installieren, werden fehlschlagen.

Remote und virtuelle Repositorys sind betroffen

Bei entfernten Repositorys sieht es anders aus, da Artifactory genau das weiterleitet, was die Drittanbieter-Registry angibt. Eine der grundlegenden Annahmen jeder Softwareintegration ist, dass die REST-API der Drittanbieter-Registry wahrheitsgemäß und genau angibt, was abgerufen wird. Die „Manifest Confusion“-Schwachstelle kann direkt auf jeder Drittanbieter-Registry ausgenutzt werden, die das .tar-Archiv nicht validiert. Daher kann Artifactory die Richtigkeit des weitergeleiteten Inhalts nicht garantieren. Außerdem können virtuelle Repositorys Inhalte aus verschiedenen lokalen und remote Repositorys aggregieren und dadurch Sicherheitslücken, die zunächst nur remote Repositorys betreffen, auch auf virtuelle Repositorys übertragen.

Kunden, die virtuelle npm-Repositorys nutzen, sollten besonders vorsichtig sein und entsprechende Maßnahmen ergreifen, um die Software-Lieferkette zu schützen, bis der Inhalt der Drittanbieter-Registry verifiziert ist.

Was können Sie tun?

Da sich die Auswirkungen in erster Linie bei remote und virtuellen Repositorys zeigen, empfehlen die Security Researcher von JFrog, die folgenden Best Practices anzuwenden, um Risiken für Entwickler zu minimieren:

  • Geeignete Benutzerberechtigungen festlegen – In Artifactory dürfen nur Benutzern mit den Berechtigungen „Deploy“ oder „Admin“ neue Pakete aus remote Registrys abrufen.
  • „Priority Resolution“-Funktion verwenden – Dieses Feature ermöglicht es, Prioritäten für ausgewählte lokale und remote Repositorys festzulegen.
  • Curation Policies verwenden – Definieren Sie Richtlinien, um OSS-Pakete automatisch zu blockieren oder zu genehmigen, bevor sie in die Software-Lieferkette gelangen.

Fazit und Empfehlung

Die npm-Schwachstelle hat Bedenken hinsichtlich der Integrität und Sicherheit von Paketen im npm-Ökosystem geweckt. Während lokale Repositorys von Jfrog Artifactory zwar nicht betroffen sind, gibt es dennoch einige kleinere Probleme mit der Benutzeroberfläche, die zu Unklarheiten über den Speicherort der Pakete führen können.

Die tatsächlichen Auswirkungen zeigen sich aber in den remote und virtuellen Repositorys. Diese liefern nämlich genau das, was Drittanbieter-Registrys deklarieren. Das kann dazu führen, dass Kunden gefährdeten oder schädlichen Paketen ausgesetzt sind. Um diese Risiken zu minimieren, wird empfohlen, anstatt zu deployen, die Benutzerberechtigungen zu überprüfen und die Anzahl der Benutzer mit umfangreicheren Berechtigungen zu begrenzen. Außerdem sollte die Funktion „Priority Resolution“ eingesetzt werden, um sicherzustellen, dass Pakete aus lokalen Repositorys und vertrauenswürdigen remote Repositorys installiert werden.

Weitere Informationen zu diesem Thema von JFrog finden Sie hier: https://jfrog.com/blog/addressing-the-npm-manifest-confusion-vulnerability/