Sie haben sicher schon einmal von Quellcode-Repositories gehört. Dabei handelt es sich um gemeinsam genutzte Speicherorte für Entwickler, die diese mit dem neuesten Code und Fehlerbehebungen aktualisieren. Unternehmen bevorzugen diese Repositories häufig, um die Verwaltung und Zusammenarbeit bei Softwareprojekten zu verbessern. Dies reduziert das Risiko von Codeverlust oder der Verwendung veralteter Versionen, weshalb Versionskontrollsysteme wie Git bevorzugt werden.
Sie fragen sich vielleicht, warum Sie die sichere Speicherung Ihrer Codedateien einer anderen Plattform anvertrauen sollten, ob diese Repos tatsächlich sicher sind und was Sie beim Umgang mit Code-Repositories beachten sollten.
Die Verwendung von Code-Repositories ist in der Branche üblich, aber es gab einige Fälle, die Unternehmen im Umgang mit Quellcode-Repository-Plattformen vorsichtiger gemacht haben. Diese Repos sind zu einer einfachen Quelle geworden Cyber-Betrug da Angreifer manchmal sensible Informationen in Codebasen wie Passwörtern, API-Token und vielem mehr finden können. Diese Code-Repositories können auch dazu führen, Kettenangriffe, was zu erheblichen finanziellen Verlusten, Rufschädigungen und Störungen des Geschäftsbetriebs führt.
Diese Gefährdung von Code-Repositories durch Cyberbetrug und -bedrohungen lässt sich jedoch leicht vermeiden durch Codesignatur Verfahren und einige branchenweit bewährte Praktiken. Lesen Sie weiter, um mehr über die Vorteile und Gefahren dieser Repositorien zu erfahren. Sie erfahren von mehreren Fällen, in denen die großen Akteure der Branche kompromittiert wurden, welche Folgen dies hatte, wie Code Signing helfen kann und was die Best Practices sind die Punkte, die Sie beim Übertragen Ihres Codes in ein Quellcode-Repository beachten sollten.
Einführung
Ein Code-Repository oder Versionsverwaltungs-Repository ist ein Ort, an dem Entwickler ihre Quellcodedateien speichern und verwalten können. Es ermöglicht mehreren Personen die Zusammenarbeit am Projekt und verfolgt die Änderungen jedes einzelnen Entwicklers. Code-Repositorys sind für Organisationen, die an Projekten arbeiten, insbesondere mit großen Teams, von Vorteil, da sie als zentrale Anlaufstelle für die Verwaltung und Überprüfung der Codebasis-Änderungen dienen. Ohne geeignete Richtlinien und Sicherheitsmaßnahmen können diese Repositories jedoch zum Ziel potenzieller Angriffe werden. Cyber-Angriff.
Sie denken vielleicht, Ihr Code enthalte keine persönlichen Informationen, die zu einem Angriff führen könnten, und sei daher weniger wichtig. Doch in Kombination mit aktiven Kontrolltechniken können diese Daten dazu genutzt werden, den Benutzer für weitaus größere Angriffe als gedacht ins Visier zu nehmen. Dazu gehören Diebstahl von Anmeldeinformationen, Social Engineering, Infrastrukturangriffe und vieles mehr. Dann fragen Sie sich vielleicht: Brauchen Sie wirklich Code-Repositories? Kurz gesagt: Ja.
Code-Repositories sind die beste Methode, Projektdateien zu verwalten. Sie erfordern lediglich einen sicheren und branchenüblichen Ansatz. Bevor wir jedoch die Best Practices für die Verwendung von Code-Repositories besprechen, wollen wir einige Schwachstellen betrachten, die in der Vergangenheit bei der Arbeit mit Quellcode-Repositories aufgetreten sind.
Warum sollte man einem Code-Repository nicht blind vertrauen?
Es gibt viele Code-Repo-Plattformen mit unterschiedlichen Funktionen und Möglichkeiten. Die Sicherheit Ihrer Codebasis hängt jedoch von der Wahl Ihrer Repository-Plattform ab. Entwickler weltweit bevorzugen bekannte und vertrauenswürdige Plattformen wie GitHub, Bitbucket, GitLab und viele andere. Dennoch konnten selbst einige dieser zuverlässigen Online-Hosts Cyberangriffe in der Vergangenheit nicht verhindern. So meldete GitHub im Jahr 2023, dass sich ein nicht autorisierter Benutzer Zugriff auf sein System verschaffte und drei Codesignaturzertifikate.
GitHub reagierte schnell und widerrief alle gestohlenen Zertifikate.Überlegen wir nun, was passieren würde, wenn GitHub den Diebstahl dieser Zertifikate nicht entdeckt hätte. Es gibt zahlreiche Szenarien, die Kunden weltweit betroffen hätten, beispielsweise könnten Angreifer das Zertifikat missbraucht haben, um Schadsoftware zu signieren, oder sie könnten betrügerische Zertifikate erstellt haben und vieles mehr.
Eine weitere gängige Praxis von Entwicklern ist die Installation von Paketen aus Open-Source-Code-Repositories. Wenn die Anwendung eines Entwicklers eine Abhängigkeit erfordert, kann er die bereits von anderen erstellten Pakete nutzen und in seiner Anwendung verwenden. Manchmal veröffentlichen Angreifer diese Code-Pakete jedoch, um die Anwendung des Benutzers zu infiltrieren. Bei einem kürzlichen Vorfall wurden trojanisierte jQuery-Pakete in npm- (Node Package Manager), GitHub- und jsDelivr-Code-Repositories gepusht. Diese trojanisierten Pakete führen zu Dependency Confusion-Angriffen.
Es handelt sich um eine Art von Software Supply-Chain-Angriff Dabei schleusen Angreifer infizierten Code anstelle legitimer Softwareabhängigkeiten ein. Diese manipulierten Abhängigkeitspakete werden dann von den Entwicklern installiert und verwendet, wodurch der Angreifer freie Hand hat. Zwischen dem 26. Mai und dem 23. Juni 2024 wurden rund 68 infizierte Pakete veröffentlicht.
Sie sollten jedes Detail des Codes oder Pakets kennen, wenn Sie es von einer Drittanbieterplattform verwenden. Diese Repositories sind ein sehr leichtes Angriffsziel, und obwohl diese Code-Repository-Plattformen Ihnen ein Höchstmaß an Sicherheit bieten, ist es in der Regel der Fehler des Softwareentwicklers, unbekannte, online verfügbare Codes zu verwenden, der zu verheerenden Cybervorfällen führt.
Methoden zur Beeinflussung eines Code-Repositorys
Diese Angriffe können auf verschiedene Weise erfolgen, lassen sich aber auch vermeiden, wenn der Benutzer auf Details achtet und die Authentizität jedes Repos hinterfragt. Jedes Mal, wenn ein Entwickler auf im Internet verfügbaren Code zugreifen möchte, sollte er sich fragen, ob andere Entwickler das Repo verwenden, wann das letzte Update war und ob das Repo zuvor vom Entwickler gelöscht und dann von einem anderen Programmierer wiederhergestellt wurde.
Solche grundlegenden Fragen können Ihnen helfen, die Wahrscheinlichkeit zu verringern, dass Sie in Ihrem Projekt anfälligen Code verwenden. Hier sind einige Techniken, mit denen Angreifer ihren Code verschleiern und Zugriff auf Ihre persönlichen Daten erhalten.
-
Typosquatting-Technik
Es handelt sich um eine der beliebtesten Strategien zum Infiltrieren eines Systems. Dabei registriert der Angreifer einen Paket- oder Code-Repository-Namen, der den bekannten Repos sehr ähnlich ist, und ändert den Namen nur geringfügig. Diese Technik funktioniert auch bei Domänennamen. Beispielsweise ändern Angreifer die Domäne einfach in „www.g00gle.com“ statt „www.google.com“.
Eine Untersuchung des JFrog-Sicherheitsteams zum PyPI (Python Package Index), einem Repository für Software in der Programmiersprache Python, ergab, dass mithilfe der Revival-Hijacking-Technik 22 aktuelle PyPI-Pakete gekapert werden können. Das funktioniert so: Sobald ein beliebtes Projekt-Repository von der PyPI-Plattform gelöscht wird, können Angreifer problemlos den Repository-Namen übernehmen und neuen Code für dieses Paket veröffentlichen. Bemerkt der Benutzer die Änderung im Repository nicht, verwendet er infizierten Code für seine Softwareanwendung.
Durch Typosquatting und ähnliche Strategien nutzen Angreifer das Vertrauen der Entwickler aus. Daher ist es so wichtig, die Authentizität von Code oder Paketen aus dem Internet zu überprüfen, insbesondere wenn diese stark an etablierte Namen erinnern oder nach der Löschung wieder eingeführt wurden.
-
Diebstahl von Anmeldeinformationen
Eine der einfachsten Möglichkeiten für einen Cyberangriff besteht darin, dass ein Entwickler die Authentifizierungsdaten im Code-Repository bereitstellt. Dies mag zwar selbstverständlich erscheinen, kann aber leicht aus dem Blickfeld des Benutzers geraten. Jede Art von Anmeldeinformationen, Token oder API-Schlüsseln kann verwendet werden, um unbefugten Zugriff auf die Entwicklerumgebung zu erlangen.
Wenn Sie glauben, Ihr Konto enthält keine wichtigen Informationen, die ein Angreifer nicht ausnutzen kann, liegen Sie falsch! Er wird dieses Passwort verwenden, um mehr über Sie zu erfahren und die Passwörter Ihrer anderen, wichtigeren Konten wie Bankkonten, Social-Media-Profile und mehr zu erraten. Um solche Angriffe zu verhindern, bietet GitHub leistungsstarke Repo-Scanning-Tools wie TruffleHog und Git-Secrets. Diese Tools erkennen und verhindern, dass Geheimnisse in ein Git-Code-Repository hochgeladen werden.
-
Klonen und Modifizieren von Repositories
Während diese Code-Repositories einen zentralen Zugriff für alle bieten, ermöglichen öffentliche Repositories Entwicklern auch, ihren Code durch Pull Requests beizutragen. Wenn der Repo-Besitzer den Code in der Anfrage nicht ordnungsgemäß prüft und zusammenführt, können Benutzer blind sein und sind leichte Beute, wenn sie den Code oder die Dateien des Repositorys in ihren Anwendungen verwenden.
Richtlinien zur Codeüberprüfung sollten umfassende Prozesse umfassen, um eine effektive Bewertung und Genehmigung von Codeänderungen zu gewährleisten. Diese sollten klare Richtlinien zu Verfahren wie Nacharbeit und erneuter Einreichung, Versionskontrollpraktiken, Dokumentationsanforderungen und vielem mehr enthalten.
Anfang 2024 wurde berichtet, dass über 100,000 GitHub-Repositories mit Schadcode infiziert waren. Sie können die Codeanalyse von Pull Requests automatisieren, indem Sie Lösungen wie SonarQube implementieren. Dabei handelt es sich um eine Open-Source-Plattform, die Ihnen hilft, die Qualität Ihres Codes zu verbessern.
Es gibt möglicherweise noch viele andere Techniken, die von Forschern noch nicht entdeckt wurden und im Einsatz sind. Wenn Sie jedoch über einfache Grundkenntnisse der Präventivmaßnahmen beim Bereitstellen Ihrer Codebasen im Code-Repository verfügen, können diese Angriffe leicht vermieden werden.
Praxisbeispiele
Ob einfaches Speichern von Dateien in Code-Repositories oder die Implementierung CI / CD-PipelinesAlles im Web erfordert höchste Sicherheitsmaßnahmen und -verfahren. Hier sind einige der Best Practices, die ein Entwickler befolgen muss, um sein Code-Repository vor Infektionen zu schützen.
- Code-Repository-Hosts bieten zahlreiche Sicherheitsfunktionen wie Abhängigkeits-Scans, automatisierte Schwachstellen-Scans und mehr zum Schutz Ihrer Codebasis. Entwickler sollten solche Funktionen aktivieren, die ihnen eine Warnung oder Benachrichtigung senden, wenn vertrauliche Informationen in das Repository hochgeladen werden oder eine nicht vertrauenswürdige Abhängigkeit im Code verwendet wird.
- Jede Organisation muss für alle Repository-Konten sichere Authentifizierungsmethoden wie 2FA aktivieren. Dies bietet zusätzlichen Schutz, selbst wenn die Anmeldeinformationen einem nicht autorisierten Benutzer zugänglich gemacht werden.
- Bleiben Sie über Abhängigkeitsaktualisierungen auf dem Laufenden und überprüfen Sie regelmäßig Ihre Codedateien, um die Codeintegrität aufrechtzuerhalten.
- Wenn Sie in einem Team an einem Projekt arbeiten, beschränken Sie den Zugriff auf das Code-Repository, um die am Repository vorgenommenen Änderungen zu verfolgen.
- Speichern Sie keine Umgebungs- oder Konfigurationsdateien in einem Code-Repository. Entwickler sollten klar verstehen, welche Daten privat sind und welche öffentlich zugänglich gemacht werden können.
- Entwickler sollten Repository-Scan-Tools wie TruffleHog und Git-secrets implementieren, um vorhandene Geheimnisse zu finden und zukünftige Commits mit vertraulichen Informationen zu verhindern.
- Erzwingen Sie immer die Code-Signierung für Commits, um die Authentizität des Codes sicherzustellen. Jeder Repo-Besitzer muss nach den kryptografischen Stempel, Unterschrift wenn ein Entwickler versucht, neuen Code in ein Repo zu pushen. Diese Signaturen zeigen den Benutzern lediglich, dass diese Softwaredatei von einer autorisierten und glaubwürdigen Organisation veröffentlicht wurde, deren Verwendung vertrauenswürdig ist.
- Jede Organisation und jeder Code-Repository-Besitzer sollte über einen Incident-Response-Plan verfügen. Ein solcher Plan trägt dazu bei, die Auswirkungen eines Cyberangriffs auf Ihr Unternehmen und Ihre Kunden zu reduzieren.
Diese Vorgehensweisen verhindern, dass Angreifer Zugriff auf Ihre Code-Repositories erhalten. Doch was wäre, wenn Sie Ihren Code vor der Veröffentlichung in einem Repo überprüfen könnten? Was wäre, wenn der Entwickler seinen Code auf Schwachstellen prüfen und scannen könnte? Was wäre, wenn er überprüfen könnte, ob sein Code im Repository bereits infiziert ist? Die von Encryption Consulting CodeSign Secure bietet alle diese Funktionen, die Ihren Aufwand reduzieren und Zeit sparen, indem Sie jeden Aspekt Ihres Codes überprüfen.
CodeSign Secure von Encryption Consulting
CodeSign Secure ist eine Plattform, die Ihre Dateien digital signiert und Ihrer Software einen authentischen Stempel verleiht. Funktionen wie reproduzierbare Builds und Pre-/Post-Hash-Validierung helfen Ihnen zu überprüfen, ob Ihr Code im Repository von einem unbekannten Benutzer verändert wurde. CodeSign Secure lässt sich nahtlos in viele CI/CD-Pipelines integrieren, wie zum Beispiel: Azure-DevOps, Jenkins, Gitlab, TeamCity, Bamboo und viele mehr, um den Prozess der Code-Signierung zu automatisieren, was sehr nützlich ist, wenn an großen Projekten mit mehreren Entwicklern gearbeitet wird.
CodeSign Secure Bietet außerdem Funktionen wie Schwachstellen-Scans, einschließlich statischer Codeanalyse (SAST) und Abhängigkeits-Scans (SCA). Diese melden alle Anomalien in Ihrer Codebasis, scannen alle verwendeten Abhängigkeiten und erlauben das Signieren Ihrer Dateien nur, wenn keine Schwachstellen vorhanden sind. Diese Scans sind präventive Maßnahmen, die dem Entwickler die Sicherheit geben, sicheren Code in ein Code-Repository zu übertragen. CodeSign Secure verbessert die Softwaresicherheit Ihres Unternehmens, schafft Vertrauen bei Ihren Benutzern und unterstützt Sie bei der Einhaltung von Branchenpraktiken und -vorschriften.
Fazit
Trotz vieler Sicherheitsvorfälle mit Code-Repositories gilt es immer noch als die am besten funktionierende und in der Branche bevorzugte Methode. Code-Repositories sind anfällig für Cyber-Angriffe Nur wenn die Entwickler nicht darauf achten, was hochgeladen und in diesen Repositories gespeichert wird. Angreifer können nur dann einen Vorteil daraus ziehen, wenn Sie es ihnen erlauben. Wenn Sie die besten Sicherheitsmaßnahmen ergreifen, regelmäßig Code-Scans durchführen und nur sicheren, signierten Code bereitstellen, können Sie Diebstähle in Ihrem Quellcode-Repo leicht vermeiden.
