Sicherheitsproblem beim Veröffentlichen meines Codes in GitHub

8

Ich entwickle eine große Community- / Forum-Website und möchte meinen Code auf GitHub hochladen , um zumindest eine Art Versionskontrolle darüber zu haben (da ich nichts anderes als eine .rar-Datei als Backup habe, nicht einmal SVN ), damit andere zu dem Projekt beitragen können, und vielleicht auch, damit meine potenziellen zukünftigen Arbeitgeber einen Teil meines Codes als eine Art Lehrplan sehen.

Aber was ich mich jetzt frage und ich bin überrascht, dass ich noch nie jemanden gesehen habe, der es erwähnt hat, ist der Sicherheitsaspekt. Ist das Veröffentlichen des Codes einer Website nicht eine RIESIGE Sicherheitslücke? Ist so, als würde man einem potenziellen Hacker oder jedem, der einen möglichen Exploit finden möchte, etwas geben, selbst wenn man bedenkt, dass die kritischen Dateien nicht hochgeladen werden (Datenbankkennwörter, Authentifizierungsskripte usw.).

Natürlich gibt es Millionen von Projekten, die auf GitHub hochgeladen wurden, und niemand wird meine nur "zufällig" finden. Aber wenn sie danach suchen, wäre es tatsächlich da.

Fazit: Mein Problem betrifft nicht das Urheberrecht oder Lizenzen, sondern andere, die Exploits auf meiner Website finden.

Vermisse ich hier etwas?

federico-t
quelle
4
Sicherheit durch Dunkelheit hat bei den meisten Programmen bisher nicht gut funktioniert. Der Quellcode ist nur ein Teil des Puzzles!
Martijn Pieters
2
Verwenden Sie stattdessen BitBucket. Es unterstützt auch Git.
Job
Haben Sie also keine offensichtlichen Exploits auf Ihrer Website, die die Leute finden können? Wenn beispielsweise anhand Ihres Quellcodes festgestellt werden kann, wo sich die SQL-Injection-Schwachstellen befinden, können Sie dies auch.
user16764
Wie @delnan weiter unten ausführt, können Sie mit GitHub private Repos zu einem Preis hosten. Abgesehen von den Millionen von öffentlichen (Open Source) Projekten, die Sie tatsächlich sehen können, gibt es wahrscheinlich Millionen von privaten Projekten auf GitHub, die niemand außerhalb des Eigentümers / der Mitarbeiter des Projekts jemals sehen wird.
Suman
1
Wenn nichts anderes, erstellen Sie ein lokales Git-Repo. Auf diese Weise können Sie zumindest einen Rollback durchführen, wenn Sie einen Fehler machen.
Zachary K

Antworten:

24

Vermisse ich hier etwas?

Ja. Wenn Sie sich darauf verlassen, dass Personen Ihren Quellcode nicht kennen, um zu verhindern, dass sie darin Sicherheits-Exploits finden, wird dies als Sicherheit durch Dunkelheit bezeichnet .

Das Problem: Es funktioniert nicht. Erfahrene Hacker benötigen den Quellcode nicht, um Schwachstellen zu finden und auszunutzen. Sie werden einige Fuzzing-Vorgänge durchführen , um Eingaben zu finden, die Probleme verursachen, und dann ihr Wissen darüber, wie das zugrunde liegende Betriebssystem / die zugrunde liegende Sprache / das zugrunde liegende Framework funktioniert, verwenden, um eine Sicherheitsanfälligkeit zu identifizieren.

Es besteht weitgehend Einigkeit darüber, dass die Veröffentlichung des Quellcodes die Sicherheit erhöht, indem wohlmeinende Personen Schwachstellen finden und beheben oder zumindest dem Entwickler davon erzählen können. Es gibt zwei wichtige Gründe, warum dies funktioniert:

  • Es gibt im Allgemeinen mehr gut gemeinte als böswillige Menschen
  • Jede Sicherheitslücke, die von einer wohlmeinenden Person gefunden wird, wird für alle behoben. Hacker arbeiten weitaus seltener zusammen

Natürlich funktioniert es nicht mit Haustierprojekten, die nur wenige aktive Benutzer haben, aber es ist auch äußerst unwahrscheinlich, dass diese von einem Hacker angegriffen werden.

Michael Borgwardt
quelle
1
Nicht dass ich zustimme oder nicht zustimme, sondern von wem "weitgehend einverstanden"? Dies ist kein Gefühl, das ich tatsächlich zum Ausdruck gebracht habe.
Steven Evers
Danke für die schnelle Antwort Mann! Und es macht Sinn, wenn ich darüber nachdenke, es ist ein Kompromiss zwischen dem Teilen von etwas, das bereits von erfahrenen Hackern gefunden worden wäre, und dem Erhalten angemessener Eingaben von gut gemeinten Programmierern. Klar hatte ich das nicht so gedacht .. Nochmals vielen Dank!
Federico-t
@ SnOrfus: siehe Linus 'Gesetz und Kerckhoffs Prinzip. Zugegeben, "weitgehend einverstanden" mag etwas übertrieben sein, aber ich würde wetten, dass die Mehrheit der erfahrenen Programmierer zustimmen würde.
Michael Borgwardt
@ MichaelBorgwardt, ich würde wetten, dass die Mehrheit der erfahrenen Programmierer nicht zustimmen würde . Sogenannte "mehr Augäpfel = weniger verletzlich" basieren nicht auf tatsächlichen Forschungsergebnissen . Herzblut ist nicht das erste und wird nicht das letzte sein. Siehe auch blog.codinghorror.com/given-enough-money-all-bugs-are-shallow
Pacerier
@ Pacerier: Ich nehme Sie jederzeit auf diese Wette auf. Beachten Sie, dass Open Source die Sicherheit erhöht und nicht zu perfekter Sicherheit führt. Sie können Beispiele für Fehler in OSS anführen, bis die Kühe nach Hause kommen und es absolut nichts Gegenteiliges beweist. Es tatsächlich ist korrekte Forschung: archive.wired.com/software/coolapps/news/2004/12/66022 - ja, es ist über 10 Jahre alt, aber bis man etwas Konkretes mit konträren Ergebnissen nicht finden, es steht.
Michael Borgwardt
6

Zunächst können Sie die (verteilte) Versionskontrolle verwenden, ohne das Repository öffentlich zu machen. Sie können einfach ein Repo auf Ihrem lokalen Computer erstellen und auf andere Computer drücken oder von diesen ziehen. Sie können das Repository auch hochladen (wodurch Sie mehr Backups und eine einfachere Zusammenarbeit erhalten), ohne es öffentlich zu machen. GitHub bietet private Repos gegen eine Gebühr an, Bitbucket macht dasselbe und macht kleine (5 Personen oder so) private Repos kostenlos. Dann erhalten Sie natürlich nicht die anderen Vorteile, die Sie erwähnt haben.

Der Sicherheitsaspekt ist eher gering. Es gibt viele, viele lohnende Angriffsvektoren, die einfach getestet werden können, ohne auf den (serverseitigen) Quellcode zu achten (z. B. auf GET- und POST-Parameter achten, Cookies und Sitzungsbehandlung überprüfen, Eingaben hinzufügen, die maskiert und überprüft werden sollten wenn ja usw.). Wenn Sie für einen von ihnen anfällig sind, kann ein entschlossener Angreifer sie relativ schnell ausnutzen, ohne auf den Quellcode zu achten. Obskurere und schwerer auszunutzende Fehler sind (wahrscheinlich) auch im Quellcode schwerer zu erkennen, sodass Sie auch hier nicht viel verlieren.

Auf der anderen Seite kann die Veröffentlichung und Annahme von Beiträgen Menschen anziehen, die Heldentaten ohne schlechte Bedeutung erkennen und Ihnen davon erzählen (oder sie sogar selbst reparieren) können. Dies gilt in zweifacher Hinsicht, wenn es sehr beliebt ist, Sie aber kein Sicherheitsexperte sind (keine Beleidigung, aber Sie klingen nicht wie eine; zum Beispiel haben Sie Sicherheit nicht durch Dunkelheit erwähnt und festgestellt, dass Ihre Besorgnis kein Fall davon ist). .


quelle
Wie ich @Michael Borgwardt sagte, macht dies durchaus Sinn. Ich vermute, der Nutzen der Veröffentlichung des Codes ist noch größer, wenn mehr Leute über das Projekt Bescheid wissen und Beiträge zur Behebung von Exploits liefern. Und wenn es nicht beliebt wäre, würden sich die potenziellen Hacker höchstwahrscheinlich auch nicht genug darum kümmern. Danke für die Antwort!
Federico-t
Soweit ich das beurteilen kann, bietet Github keine kostenlosen privaten Repos an (eine kleine Korrektur, kein Nitpick).
Scrwtp
@scrwtp: 'gegen Gebühr' ist nicht dasselbe wie kostenlos.
Martijn Pieters
Ah, stimmt, ich habe falsch verstanden.
Scrwtp
3

BitBucket hat kostenlose private Repos und unterstützt sowohl Git als auch Mercurial.

jiggy
quelle
2

Wenn Sie das Problem der Sicherheit beiseite lassen und feststellen, ob die Veröffentlichung Ihres Codes dies verbessern würde oder nicht, können Sie selbst ein Versionsverwaltungssystem auf Ihrem Computer einrichten. Wenn Git trivial ist, initialisieren Sie einfach ein lokales Repository und Sie sind fertig, aber das Festlegen eines SVN ist auch keine entmutigende Aufgabe. Vielleicht ein oder zwei Stunden nach den Tutorials, wenn Sie wenig Vorkenntnisse zum Einrichten von SVN haben.

So können Sie weiterhin von der Quellcodeverwaltung profitieren, unabhängig davon, ob Sie einen Onlinedienst nutzen oder nicht.

scrwtp
quelle
0

Die meisten böswilligen Hackerangriffe werden anonym durchgeführt. Eine Person in Russland, die ein Skript ausführt, das Hosts nach offenen Ports oder What-Have-You durchsucht. Niemand wird explizit über Ihren Code gießen, nur um einen Weg zu finden, sich einzumischen, um Schaden anzurichten. Nicht, wenn Sie nicht wirklich jemanden verärgern.

nbv4
quelle