Updater - Worauf sollte man bei eigenen Updatern achten?

    • Allgemein

    Es gibt 53 Antworten in diesem Thema. Der letzte Beitrag () ist von thefiloe.

      @ThuCommix
      Naja, wer in der Wartezeit ein Steam-Spiel spielen will, muss Steam mitstarten (mit ganz wenigen Ausnahmen). Das selbe gilt für Origin.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      Man kann den Nutzer ja auch erst fragen, ob er updaten möchte, bevor irgendetwas heruntergeladen wird oder nicht? Wenn er das dann in öffentlichen Netzwerken machen möchte, kann er das ja gerne machen.
      Twitch Viewer Display Chat-, Zuschauer- und Statistiktool für Streamer
      Es geht nicht nur um ARP-Spoofing, auch gekaperte Webspaces sind eine große Gefahr. Hätte z.B. der Puush-Dienst seine Pakete vernünftig validiert, wäre es nie zur Verbreitung der entsprechenden Malware gekommen. Und der Flughafen ist u. a. nur ein Beispiel für die Verwendung öffentlicher WLAN-Netzwerke (natürlich nicht überall, gibt sicher auch da öfters mal sichere Netzwerke).
      EIne Signierung der Pakete ist also unbedingt notwendig, um alle Fälle abzudecken.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Trade“ ()

      @newcat
      Oh, das denkst Du. Aber Steam fragt nicht lange nach ob man updaten will. Es macht einfach. Das selbe gilt für Windows 10. Bei Origin bin ich nicht sicher, ich glaube, das lädt die Updates nicht sofort herunter. Solange man nicht spielen will, denn dann muss man sowieso updaten.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      Einigen ist anscheinend noch nicht ganz klar, wie Janusangriffe ablaufen, daher ist's wohl nur Theorie.
      Auf Wikipedia ist ein ganz guter Artikel, bei dem man ja auch alle Informationen drumrum abrufen kann.

      Und ja, eine Verschlüsselung über HTTPS ist schon eine gute Abwehr, allerdings können die Pakete bereits schon auf dem Server manipuliert worden sein, wenn der kompromittiert ist. Und genau deshalb muss man da am Anfangs- und Endpunkt mit einer Signatur ansetzen, um das zu erkennen.
      Das schützt dann auch gleich gegen MITM-Angriffe mit, falls eine Verschlüsselung nicht gewährleistet ist und eine Integritätsprüfung ist zugleich auch noch da.
      Der Puush-Dienst hat's halt leider erst zu spät erkannt, dass das notwendig ist und dann hatten sie den Salat. Im Endeffekt hatten sie sogar noch Glück, dass die betreffende Malware offensichtlich nicht so schlimm war. Dennoch hätte ich so oder so neu aufgesetzt.
      Das alles, verursacht durch einen eigentlich vertrauenswürdigen Dienst, und der User kann nicht einmal was dafür.

      Und 'ne Software ist eine Software, bei der man damit rechnen muss, dass sie verwendet wird. Selbst wenn es "nur" 50 Nutzer sind.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Der Puush-Dienst hat's halt leider erst zu spät erkannt

      Ach ja, das hab ich total vergessen. Puush wurde ja erfolgreich angegriffen. Damit wäre auch gleich demonstriert, was gesagt wurde.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      blog.fefe.de/?ts=a99e8a27
      Mal was der etwas anderen Art. ಠ_ಠ

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Nein. Der Server kann immer noch kompromittiert sein, sodass die Dateien ausgetauscht werden können. Da hilft dann keine Verschlüsselung.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Es geht darum, dass der Benutzer das Programm bereits auf dem PC (installiert) hat. Dann kannst Du das Update austauschen, aber es bringt nichts, da der PublicKey, der in der Endanwendung liegt, nicht verändert werden kann. Folglich wird dann die Signatur als falsch erkannt und die Installation verhindert.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      @3Angle sieh es so:
      HTTPS bringt dir die Garantie, dass du mit dem Richtigen Server kommunizierst, und dass die Daten sicher vom Server zum Client gelangen.
      Signierung bringt dir die Garantie, dass die Dateien von dir Stammen und unverändert am Client angelangt sind.
      Erst wenn alle 4 Faktoren erfüllt sind, also
      • Korrekter Kommunikationspartner
      • Sicherheit der Daten
      • Ursprung der Daten
      • Unversehrtheit der Daten
      erst dann sollte die Ausführung der heruntergeladenen Daten geschehen dürfen. Andernfalls Kommunikation abbrechen, oder Daten löschen.
      Wieso sollte denn dann nur der Server kompromitiert sein? Wenn der "Hacker" an das Zertifikat kommt, dann hilft dieses System auch nicht.

      Die meisten FTP Daten werden ja via RAT ausgelesen und dann kann man direkt das Zertifikat vom Entwickler mitnehmen. In anderen Worten erhöht dies den Auswand, aber nicht die Sicherheit? Sofern wie von einem normalen Einzelentwickler ausgehen. Bei großen Firmen mit einem Signierrechner ohne Netzverbindung sollte der Nutzen höher sein. Zusätzlich werden sich kaum Hacker den Aufwand für diese geringe Downloadzahl machen. Trotzdem ist bei logischen Sicherheitsvorkehrungen diese/deine Art der Aktualisierung vorzuziehen.

      Persönlich informiere ich die Nutzer nur und lasse diese immer die aktuelle Version herunterladen.

      3Angle schrieb:

      Wenn der "Hacker" an das Zertifikat kommt, dann hilft dieses System auch nicht.
      Was für ein Zertifikat? Und wenn der Angreifer an die Signaturdaten kommt und diese austauscht, dann passiert eben gar nichts. Das ist ja der Sinn.

      Im ganzen Kontext weiß ich nicht ganz, von welchem Zertifikat Du sprichst. Fakt ist jedoch, dass jedes System vernünftig abgesichert sein muss, auch wenn es nur 5 Leute nutzen.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Nein, kann er nicht. Wie willst Du das denn machen? Natürlich kannst Du die Signatur austauschen. Aber das bringt Dir ja nichts, weil Du keinen Zugriff auf den öffentlichen Schlüssel hast.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Ich denke ihr beide meint das gleiche, aber redet aneinander vorbei. Trade versucht zu erklären, dass es nicht reicht den Web und FTP-Server zu übernehmen um falsche Updates in Umlauf zu bringen, da man den Schlüssel des Entwicklers von seinem Privatrechner braucht. 3Angle meint glaube ich mit Zertifikat diesen Schlüssen und geht davon aus, dass auch der Privatrechner infiziert worden ist. Ja in dem Fall kann der Hacker selbst auch Update-Pakete schnüren, aber ich glaube das musst du viel weiter differenzieren. An den Web oder FTS-Server kann ich auch kommen, indem ich an einen döseligen Support Mitarbeite gelange, der mir dann deine Zugangsdaten gibt oder durch Bestechung oder wie auch immer, aber an den Schlüssel auf deinem Privatrechner, der vermutlich versteckt in einem Archiv oder so irgendwo vergraben liegt? Das ist doch eine ganz andere Hausnummer. Hier könnte ich den Schlüssel sogar auf ein Blatt Papier schreiben und nur Just in Time zur Signierung eingeben.
      Ja, das ist klar. Jetzt weiß ich auch, was Du in dem Kontext mit RAT sagen wolltest.^^ Mich hat nur das "Zertifikat" verwirrt. Wenn der Entwickler nicht fähig ist, seinen privaten Schlüssel sicher zu lagern und der dann in die Hände des Angreifers gerät, dann hilft das auch nichts mehr.
      Dagegen ist aber kein System sicher. Sobald jemand auf Deinen Rechner Zugriff hat, kann er alles mögliche anstellen. Das ist der Punkt, warum es so wichtig ist, Daten vernünftig zu sichern und nicht einfach jedem in die Hände zu drücken.
      Wenn der Entwickler dann entsprechend schuld ist, weil der Private Key von seinem Rechner gekapert wurde, dann ist das eben auch sein Problem. Für den Fall, dass er aber eig. nichts dafür könnte bzw. nur indirekt, kann er sich halt mit Validierungsverfahren absichern.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: