8 Stimmen

Welche Gefahr geht von Reflection aus? (Mittleres Vertrauen)

Der Mangel an Reflexion in Medium Trust Hosting-Umgebungen scheint eine Menge Probleme verursachen für viele beliebte Webanwendungen.

  • Warum ist ReflectionPermission standardmäßig mit Medium Trust deaktiviert?
  • Welches Risiko stellt die Reflexion in einer gemeinsam genutzten Hosting-Umgebung dar?

Für eine zufällige Referenz, siehe MSDN: Wie man Medium Trust in ASP.NET 2.0 verwendet

6voto

Jeff Sternal Punkte 46528

Durch Reflexion kann bösartiger Code alle Arten von Geheimnissen einsehen: nicht so sehr geistiges Eigentum (obwohl das natürlich auch möglich ist), sondern Daten, die privat und sicher sein sollten, wie z. B. Verbindungszeichenfolgen, Kennwörter, Bankkontodaten usw.

Natürlich geben viele Programme diese Daten ganz selbstverständlich über noch leichter angreifbare Vektoren preis, aber es gibt keinen Grund, die Angriffsfläche einer Anwendung zu vergrößern.

Bearbeitet, um einen Teil des Gesprächs aus den Kommentaren nach oben zu bringen:

Wahrscheinlich stimmt es, dass das eigentliche Risiko der uneingeschränkte Zugriff auf das Dateisystem ist, der die Reflexion zu einer echten Gefahr macht. Wenn ein böser Akteur eine Assembly (oder etwas, das in eine Assembly kompiliert wird) in Ihr virtuelles Verzeichnis bringen kann, haben Sie ein Problem, wenn er die Reflection-Berechtigung hat. (Wenn dies geschieht, gibt es natürlich auch andere potenzielle Probleme, aber das sollte diese spezielle Schwachstelle nicht außer Acht lassen).

In einer gemeinsam genutzten Hosting-Umgebung ist das schwieriger zu verhindern, obwohl es sicherlich nicht unmöglich ist. Vielleicht lohnt es sich, diese Frage als Querverweis auf ServerFault um zu sehen, was die guten Leute dort zu sagen haben.

4voto

Thorarin Punkte 45433

Ich habe noch nie etwas "Schlechtes" gefunden, das ein Benutzer mit Hilfe von Reflexion tun könnte. Die Leute werden abgeschreckt, weil man Methoden aufrufen kann, die als privat oder geschützt gekennzeichnet sind, aber nach dem, was ich gesehen habe, birgt keine dieser Methoden ein wirkliches Risiko.

Höchstwahrscheinlich handelt es sich dabei zumindest teilweise um eine Verkaufstechnik, um Sie dazu zu bringen, für ein (halb-)dediziertes Hosting Geld auszugeben :)

3voto

Gabe Sumner Punkte 4878

Ich habe den folgenden MSDN-Artikel zu diesem Thema gefunden:

Sicherheitserwägungen für Reflection

Dieser Artikel ist ein Echo auf Jeffs Antwort:

Die Reflexion bietet die Möglichkeit Informationen über Typen und Mitglieder zu erhalten Mitglieder zu erhalten und auf Mitglieder zuzugreifen. Der Zugriff auf nicht-öffentliche Mitglieder könnte ein Sicherheitsrisiko darstellen. Daher sollte Code, der auf nicht-öffentliche Mitglieder zugreift erfordert daher ReflectionPermission mit den entsprechenden Flags.

Ich glaube jedoch nicht, dass dieses Risiko zwischen den Hosting-Konten der Kunden ausgenutzt werden kann. Es scheint, dass dies nur ein persönliches Risiko darstellen würde. Mit Reflection könnte ich zum Beispiel meine eigenen Baugruppen in meiner Hosting-Umgebung untersuchen. Andere Kunden könnten jedoch Reflection nicht verwenden, um Folgendes zu untersuchen meine Versammlungen. Sie konnten nur erkunden ihre Versammlungen.

Dies kann bei einer einzelnen Webanwendung, an der mehrere Entwicklungsteams beteiligt sind, ein Problem darstellen. Ein Entwicklungsteam könnte Reflection verwenden, um die Assemblies eines anderen Entwicklungsteams zu untersuchen.

Dies ist jedoch ein seltenes Szenario für eine gemeinsam genutzte Hosting-Umgebung. An den meisten Shared-Hosting-Websites ist ein sehr kleines Team beteiligt, das vollen Zugriff auf todo den Code. Mit anderen Worten: Es gibt keine Geheimnisse. Solange die Baugruppe vor anderen Shared-Hosting-Kunden sicher ist, ist das kein Problem.

Die Aktivierung von Reflection sollte für die meisten Shared-Hosting-Webanwendungen kein Risiko darstellen:

<IPermission class="ReflectionPermission" version="1" Flags="RestrictedMemberAccess"/>

Bitte korrigieren Sie mich, wenn ich falsch liege.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X