Bei einem kürzlichen Interview wurde ich gefragt:
Open-Source-Web-App (etwa auf Struts / Spring) ist anfälliger für Hacker, da jeder auf den Quellcode zugreifen und ihn ändern kann. Wie verhindern Sie das?
Meine Antwort war:
Der Java-Quellcode ist nicht direkt zugänglich. Es wird in Klassendateien kompiliert, die dann in einer WAR-Datei gebündelt und in einem sicheren Container wie dem Weblogic-Anwendungsserver bereitgestellt werden. Der App-Server befindet sich hinter einer Unternehmensfirewall und ist nicht direkt zugänglich.
Damals - ich habe nichts über XSS und SQL-Injection erwähnt, was eine COTS-basierte Web-App ähnlich einer Open-Source-Anwendung betreffen könnte.
Meine Fragen:
a) Ist meine Antwort auf die Frage korrekt?
b) Welche zusätzlichen Punkte kann ich der Antwort hinzufügen?
Danke im Voraus.
BEARBEITEN:
Während ich Ihre Antworten verdiene - lassen Sie mich auch darauf hinweisen, dass die Frage auch auf Frameworks wie Liferay und Apache OFBiz gerichtet war.
Die Frage ist ein verschleiertes Argument für Sicherheit durch Unklarheit. Ich schlage vor, Sie lesen die üblichen Argumente dafür und dagegen und sehen, wie das passt:
Meine persönliche Meinung ist, dass Dunkelheit bestenfalls die schwächste Verteidigungsschicht gegen Angriffe ist. Es könnte helfen, automatisierte Angriffe durch uninformierte Angreifer herauszufiltern, aber es hilft nicht viel gegen einen entschlossenen Angriff.
a) Ist meine Antwort auf die Frage korrekt?
Der Teil über die Quelle, auf den nicht zugegriffen werden kann (um ihn zu ändern), weil er kompiliert und dort eingesetzt wird, wo er nicht berührt werden kann, ist keine gute Antwort. Gleiches gilt für nicht-Open-Source-Software. Gegen einen Open-Source-Stack spricht, dass die Quelle lesbar ist, was es einfacher macht, Schwachstellen zu finden, die gegen die installierte App ausgenutzt werden können (kompiliert oder nicht).
Der Punkt über die Firewall ist gut (auch wenn es die Offenheit oder Geschlossenheit der Software nicht betrifft).
b) Welche zusätzlichen Punkte kann ich der Antwort hinzufügen?
Das wichtigste Gegenargument gegen die Sicherheit durch Unklarheit (was hier argumentiert wurde) ist, dass mit Open-Source-Software viel mehr Leute die Quelle betrachten werden, um diese Probleme zu finden und zu beheben.
da jeder auf den Quellcode zugreifen und ihn ändern kann.
Bist du sicher, dass sie das gesagt haben? Ändern Sie es? Nicht "studieren"?
Ich sehe nicht, wie jemand einfach den Quellcode für Struts ändern kann ...
Ein populäres Open-Source-Web-Framework / CMS / Bibliothek ist weniger anfällig für langwierige Bugs, da viele Leute sich den Code ansehen, die Fehler finden und beheben. (Beachten Sie, dass dies wichtig ist, wenn Sie Ihre Daten auf dem neuesten Stand halten müssen.)
Nun, dein Freund hat einen winzigen Punkt - jeder, der die Fehler beheben kann, könnte sie auch einführen, wenn das Projekt von einem Haufen Idioten durchgeführt wird. Wenn sie Patches von einem zufälligen Schmink nehmen, ohne die Patches zu überdenken, oder nicht wissen, was sie an erster Stelle tun, ist es möglich, Fehler in das Framework einzubringen. (Dies ist nicht wichtig, es sei denn, Sie werden regelmäßig aktualisiert.) Daher ist es wichtig, einen zu verwenden, der von Leuten, die einen Hinweis haben, in gutem Zustand gehalten wird.
Beachten Sie, dass alle Probleme mit Open-Source-Frameworks / Apps auch für COTS gelten. Sie werden nichts über Bugs in letzterem wissen, bevor bugtraq und andere solche Listen sie veröffentlichen, da große Unternehmen so tun, als gäbe es keine Bugs in ihrer Software, bis sie reagieren müssen.
a) Ja. Open Source bedeutet nicht offene Binärdateien :) Der Satz "Jeder kann den Quellcode ändern" ist einfach falsch (Sie können Ihre Kopie des Codes ändern, aber Apache Struts Code nicht bearbeiten)
b) Vielleicht macht es die Tatsache, dass der Quellcode sichtbar ist, für jemanden leichter, die möglichen Fehler zu erkennen und auszunutzen. Aber das gleiche Argument funktioniert andersherum: Da viele Leute den Code überprüfen, werden die Fehler schneller gefunden, so dass der Code am Ende robuster ist.
Tags und Links java security web-applications