Frage:
Ist die Offenlegung der Serverzeit ein Sicherheitsrisiko?
Manny
2018-06-08 14:15:12 UTC
view on stackexchange narkive permalink

Wenn ich ein Servlet erstelle, das die Serverzeit öffentlich zurückgibt (keine Authentifizierung erforderlich), ist dies ein Sicherheitsproblem? Ich konnte mir kein Problem damit vorstellen, aber irgendwie sagt mir etwas, dass ich falsch liegen könnte.

Um mehr zu erklären, wird dieser Endpunkt von mobilen Apps verwendet, um deren Sicherheit zu verbessern (um Betrug zu vermeiden durch Anpassen des Gerätedatums).

Sie hätten fragen sollen: "Wie hoch ist das Sicherheitsrisiko, wenn die Zeit meines Servers öffentlich zugänglich gemacht wird?"Das Aufdecken von ** allem ** an Ihrem System ist ein potenzielles Risiko, obwohl die Zeit (vorausgesetzt, sie ist korrekt) am untersten Ende des Bedrohungsspektrums liegt.
Übrigens sollte die "Serverzeit" UTC sein und über NTP eingestellt werden, was bedeutet, dass es sich sowieso um öffentliche Informationen handelt.(Oh, und wenn Sie Servlets direkt schreiben, anstatt ein Framework wie Spring oder Dropwizard zu verwenden, ist es viel wahrscheinlicher, dass diese Handimplementierung Sicherheitslücken verursacht, als die Zeit offenzulegen.)
Sie sollten davon ausgehen, dass sie alles ändern können.Wenn sie bereit sind, das Datum auf ihrem Telefon zu ändern, wer sagt dann, dass sie die Antwort vom Server an ihrer Firewall nicht abfangen und das Datum auch dort ändern werden?Sie können sich nur darauf verlassen, dass ein Kunde Ihnen mitteilt, was der Kunde tun möchte.Jede andere Validierung, egal wie trivial sie auch sein mag, muss als gefährdet angesehen und an einem Ort überprüft werden, an dem Sie ihr vertrauen können.
Sieben antworten:
forest
2018-06-08 14:22:40 UTC
view on stackexchange narkive permalink

Die Serverzeit ist für einen Angreifer im Allgemeinen von geringem Nutzen, solange sie korrekt ist. Tatsächlich wird nicht die aktuelle Zeit (abgesehen von der relativistischen Physik, die Zeit ist überall konsistent) offenbart, sondern die Zeitverschiebung. Beachten Sie, dass es häufig zahlreiche Möglichkeiten gibt, die lokale Serverzeit zu ermitteln, auch wenn Sie die Uhrzeit nicht explizit angeben. Beispielsweise bettet TLS bis Version 1.2 die aktuelle Zeit in den Handshake ein. Auf Webseiten werden möglicherweise die letzten Änderungsdaten dynamischer Seiten angezeigt. HTTP-Antworten selbst können enthalten Die aktuelle Uhrzeit und das aktuelle Datum in Antwortheadern usw.

Die genaue Kenntnis des Zeitversatzes eines Servers ist nur in ganz bestimmten Bedrohungsmodellen ein Problem:

  • Clock Skew kann bei Angriffen verwendet werden, um versteckte Dienste von Tor zu deonymisieren.

  • Schlecht geschriebene Anwendungen verwenden möglicherweise Serverzeit, um geheime Werte zu generieren.

  • Die Umgebungsbedingungen des RTC können in erfundenen Situationen offengelegt werden.

[Die aktuelle Uhrzeit muss auch in einer HTTP-Antwort gesendet werden] (https://tools.ietf.org/html/rfc7231#section-7.1.1.2).
Wird es zu einem Problem, wenn die Serverzeit nicht genau ist?
@ToddSewell Wenn die Serverzeit nicht genau ist, kann ein Angreifer dies auf verschiedene Weise missbrauchen.TLS und Zertifikate basieren im Allgemeinen auf einer genauen Systemzeit.
Im Zusammenhang damit habe ich eine Anleitung zu einer Reihe von [verschiedenen Möglichkeiten, wie Sie die Zeit auf einem Remote-Server bestimmen können] geschrieben (https://github.com/gsuberland/infosec-tricks/blob/master/remote_server_time.md).
_ "solange es korrekt ist" _ Dies scheint zu implizieren, dass die * in * genaue Serverzeit ein Sicherheitsproblem darstellt.Ist es?Wenn das so ist, wie?
Noch ein paar Punkte zur Sicherheit;Die synchronisierte Zeit ist manchmal eine integrierte Abhängigkeit für die Richtigkeit einiger verteilter Systeme, z. B. Cockroach DB, die Zeitstempel verwendet, um Transaktionskonflikte zu lösen oder sich vor Wiederholungsangriffen zu schützen, wie im Protokoll zur Einzelpaketauthentifizierung, das vom Rekonfigurationstool für dynamische Remote-Firewall verwendet wird`fwknop`.Ich würde nicht ausschließen, dass ein kluger und entschlossener Angreifer einen Weg findet, das Wissen über den Zeitversatz (insbesondere Änderungen des Zeitversatzes * im Laufe der Zeit *) und ein solches Protokoll für Datenkorruption oder DoS zu nutzen.
"Abgesehen von der relativistischen Physik ist die Zeit überall konsistent." Daten, die über ein Glasfaserkabel übertragen werden, bewegen sich jedoch mit ungefähr 2/3 c.(Das Erreichen des Ziels kann langsamer sein, da das Licht viel herumwirbelt, aber es bewegt sich immer noch * verdammt * schnell.)
@jpmc26 Aber die Daten sind Licht, das keine Masse hat, so dass ihre Geschwindigkeit keine Zeitdilatationseffekte verursacht (was hier etwas vereinfacht wird, da Photonen technisch in der Zeit von ihrer Erzeugung bis zu ihrer Absorption "eingefroren" sind).
@ray Eine ungenaue Uhr ist ein Sicherheitsproblem.Wie oben kurz erwähnt, benötigt TLS genaue Zeit, um sicher zu sein.Gleiches gilt für viele andere zertifikatsbezogene Aktivitäten, z. B. die kryptografische Überprüfung durch den Paketmanager.
@forest wäre also ein Angriff, wenn der Server nach Client-Zertifikaten fragt und Sie wissen, dass die Uhr sechs Monate zurückliegt, können Sie ihm stattdessen ein abgelaufenes Zertifikat geben?Sie müssen jedoch nicht die Zeit offen haben, um einen solchen Angriff auszuführen - Sie können es trotzdem versuchen.
@OrangeDog Richtig.Ich habe nicht gemeint, dass eine verzerrte Uhr nur dann ein Problem ist, wenn Sie wissen, dass sie schief ist.
Marcus Müller
2018-06-08 14:24:02 UTC
view on stackexchange narkive permalink

"Servlet" klingt so, als würden Sie dort bereits einen komplexen Server betreiben.

Es gibt viele Möglichkeiten, wie Protokolle die Serverzeit verlieren. Beispielsweise verfügt HTTP über ein beliebtes Headerfeld für die Erstellungs- / Änderungszeit, und dynamisch generierte Daten haben bei ordnungsgemäßer Verwendung immer die aktuelle Systemzeit.

Aus Gründen der TLS-Authentifizierung können Sie sogar eine binäre Suche suchen Datum und Uhrzeit eines Endpunkts mithilfe ablaufender Client-Zertifikate.

Dies ist ein notwendiges Übel. Wenn Sie TLS ausführen, muss Ihr Server eine Vorstellung von der Zeit haben, um zu wissen, was ein gültiger Schlüssel / Zertifikat ist und was nicht . Wenn dies der Fall ist, wird dies sehr wahrscheinlich eine NTP-koordinierte Zeit sein. Sie können also wirklich nichts über den Server sagen, was ein Angreifer nicht bereits wissen würde - es gibt wirklich nur eine "richtige" Zeit.

Wenn Sie kein TLS ausführen, ist es wahrscheinlich, dass die Systemzeit verloren geht Nicht das erste, was Sie beheben sollten.

In Bezug auf die Sicherheit: Sie sind sich nicht sicher, ob Sie ein weiteres Servlet verfügbar machen sollten, damit Geräte die Weltzeit ermitteln können.

Um mehr zu erklären, wird dieser Endpunkt von mobilen Apps verwendet, um deren Sicherheit zu verbessern (um Betrug durch Anpassen des Gerätedatums zu vermeiden).

Rote Fahne . Sie sind abhängig von der Unverändertheit Ihres Kunden in Bezug auf die Sicherheit. TU das niemals. Sie können einfach nicht darauf vertrauen, dass auf den Geräten Ihres Benutzers etwas passiert. Dies sind nicht Ihre Geräte. Sie können einfach einen Debugger anschließen und Zeitvorstellungen im Speicher Ihres Prozesses ändern, unabhängig davon, ob sie vom Betriebssystem des Telefons oder von Ihrer Anwendung gespeichert werden.

Ich denke, Sie haben den Teil "Um mehr zu erklären ..." falsch verstanden.Im Gegensatz dazu gehe ich bereits davon aus, dass Benutzer von mobilen Apps die Gerätezeit eher zum Betrügen ändern. Deshalb benötige ich die Serverzeit für die Gegenprüfung.Wenn es einen korrekteren Weg gibt, bin ich ganz Ohr.Aber auch danke für Ihren Beitrag.
@Manny: sendet jeden Befehl an den Server.Lassen Sie den Server jede Aktion überprüfen.Sie können im Client-Code davon ausgehen, dass der Server die Konsequenzen genehmigt und ausführt.Wenn sich herausstellt, dass der Server eine Aktion ablehnt (z. B. eine Sekunde später), kehren Sie auf dem Client zurück.Auf diese Weise ist Ihr Server die Autorität.Ihr Server ist (sollte) zu 100% unter Ihrer Kontrolle und dort können Sie Dingen wie der Systemzeit vertrauen.
Die "undichte" Systemzeit sollte niemals behoben werden.Für den ordnungsgemäßen Betrieb von TLS und HTTP muss dies angegeben werden.
@OrangeDog genau das, was ich in meiner Antwort gesagt habe.
pjc50
2018-06-08 20:30:15 UTC
view on stackexchange narkive permalink

Das einzige, was wirklich ein Sicherheitsrisiko darstellen könnte, sind die hochpräzisen Timer und Leistungsindikatoren. Diese können verwendet werden, um genau zu bestimmen, wie lange ein kryptografischer Prozess auf dem Server dauert, und von dort aus geheime Daten abzuleiten. p>

Tom
2018-07-06 15:06:46 UTC
view on stackexchange narkive permalink

Serverzeit ist kein Geheimnis . Im Gegenteil, es wird dringend empfohlen, Ihre Zeit mit einer externen objektiven Zeitquelle zu synchronisieren (z. B. einer Atomuhr, die über einen Zeitserver verfügbar gemacht wird).

Nicht geheim zu sein hat zwei Konsequenzen:

  1. Sie müssen es nicht schützen oder verstecken. Sie können davon ausgehen, dass der Angreifer in der Lage ist, die aktuelle Uhrzeit zu ermitteln.
  2. Es sollte keine Funktion für etwas haben, das Sie schützen oder verbergen möchten. Zum Beispiel sollten Sie keine Schlüssel oder Geheimnisse aus der Zeit ableiten. Alle zufälligen Funktionen, die Sie verwenden, sollten nicht mit der aktuellen Zeit (in vielen Fällen immer noch ein fauler Standard), sondern mit einer besseren Startquelle gesetzt werden.
  3. ol>
Serge Ballesta
2018-06-08 17:44:49 UTC
view on stackexchange narkive permalink

Die Kenntnis der Serverzeit ist für einen Angreifer von geringem Nutzen. Hier sollten Sie sich also über mögliche Nebenwirkungen informieren.

  • Ist der Schutz für dieses Servlet (in irgendeiner Weise) schwächer als der eines anderen Servlets? Was sind die möglichen Auswirkungen der Keine Authentifizierung in Bezug auf DOS / DDOS-Angriffe? Es kann von Bedeutung sein, ob die Authentifizierung auf anderen sichereren Servern verarbeitet wurde. Gibt es einen Unterschied beim Reverse Proxy?
  • Welche Risiken bestehen für Sicherheitslücken in diesem Servlet? Hat es die gleichen Qualitätsversicherungskontrollen wie die anderen Servlets durchgeführt? Was ist mit dem Wartungszyklus?
  • was ist mit dem Servlet-Container?
Javatasse
2018-06-09 03:44:07 UTC
view on stackexchange narkive permalink

Ich möchte darauf antworten, indem ich darauf hinweise, was sich aus der Annahme ergeben würde, dass das Offenlegen der Serverzeit tatsächlich ein Risiko darstellt. Dies würde bedeuten, dass Systemadministratoren zufällige Zeiten auf ihren Systemen festlegen müssten, da alle Der Server, der auf die richtige Zeit eingestellt ist, ist anfällig, da eine korrekte oder nahezu korrekte Serverzeit einfach zu leicht zu erraten ist. Es würde auch einen extremen Entwicklungsaufwand bedeuten, eine falsche Einstellung in eine korrekte Zeit für die Verwendung in jeder zeitbezogenen Anwendung zu übersetzen. Jede einzelne Datei auf dem System hätte einen falschen Zeitstempel.

Nach meiner Erfahrung verursachen Sie viel mehr Probleme, wenn Sie falsche Serverzeiten einstellen, als Sie mit der richtigen Einstellung erwarten können. Einige Beispiele werden in anderen Antworten erwähnt, aber Sie müssen auch verteilte Anwendungen oder Cluster berücksichtigen, bei denen normalerweise korrekte Zeiteinstellungen erforderlich sind. Grundsätzlich sind alle zeitbezogenen Informationen, die Sie speichern, fehlerhaft.

Wenn die Offenlegung Ihrer Systemzeit Ihr größtes Risiko darstellt, hatten Sie Glück. Aber höchstwahrscheinlich gibt es viele andere Bedenken, denen Sie nicht genug Aufmerksamkeit geschenkt haben. Unter https://www.owasp.org/index.php/Main_Page finden Sie sicherheitsrelevante Probleme und Best Practices.

user195233
2018-12-24 12:15:12 UTC
view on stackexchange narkive permalink

Das einzige, woran ich denken kann, ist, wenn Sie die "Betriebszeit" des Servers offengelegt haben - dies könnte einen Hinweis auf die zuletzt installierten Patches geben. Ich glaube jedoch, dass dies normalerweise nicht öffentlich zugänglich gemacht wird - aber nicht überprüft wurde. Es könnte sich daher lohnen, dies zu bestätigen, wenn Sie interessiert sind.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...