Schwerer Bug? UDP bringt Miniserver zum Absturz/Reboot - 7.4.4.14

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Prof.Mobilux
    Supermoderator
    • 25.08.2015
    • 4762

    #1

    Schwerer Bug? UDP bringt Miniserver zum Absturz/Reboot - 7.4.4.14

    Moin zusammen,

    eigentlich dachte ich, dass Loxone das UDP-Thema gelöst hätte... Ich teste gerade eine neue Version meines Wunderground-Wetterservers und habe folgendes Phänomen festgestellt:

    Ich sende ca. 1200 Werte hintereinander per UDP an den Miniserver. Die Daten sind ein Sammelsurium von Werten und Texten:

    cur_date@233337955
    cur_date_des@Tue, 24 May 2016 15:05:55 +0200
    cur_date_tz_des_sh@CEST
    cur_date_tz_des@Europe/Berlin
    cur_date_tz@+0200
    cur_day@24
    cur_month@5
    cur_year@2016
    cur_hour@15
    cur_min@5
    cur_loc_n@Pieschen, Dresden
    cur_loc_c@Germany
    cur_loc_ccode@DE
    cur_loc_lat@51.077175
    cur_loc_long@13.728671
    cur_loc_el@113.9952
    cur_tt@18.5
    cur_tt_fl@18.5
    cur_hu@81
    cur_w_dirdes@Süd-Südost
    cur_w_dir@157
    cur_w_sp@0
    cur_w_gu@4.0
    cur_w_ch@-9999.00
    cur_pr@1010
    cur_dp@15.2
    cur_vis@10.0
    cur_sr@120
    cur_hi@-9999.00
    cur_uvi@1.0
    cur_prec_today@0
    cur_prec_1hr@0.0
    usw.
    Das bringt den Miniserver regelmäßig zum Absturz bzw. zum Reboot!

    Was ich bereits getestet habe: Blockweises Senden von 50 Werten, dann 10 Sekunden Pause, dann wieder 50 Werte etc. Zusätzlich habe ich eine Verzögerung von 0,1 Sek. nach jedem Wert eingebaut. Beides hat die Reboots zwar reduziert, aber sie treten nach wie vor ca. 1x pro Stunde auf.

    Das würde bedeuten, dass nicht nur nach wie vor die UDP-Schnittstelle kaputt wäre, sondern auch, dass man mit einem gezielten Angriff den Miniserver so außer Gefecht setzen könnte.

    Kann das jemand bestätigen?
    🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


    LoxBerry - Beyond the Limits

  • LoxFFB
    Extension Master
    • 29.08.2015
    • 197

    #2
    Weis nicht ob das ein ähnliches Problem ist
    hab einen Mini Server Client Gateway
    eo sich nach Programm aufspielen meist die Netzwerk Schnittstelle blockiert hilft nur spannungsreset
    und hin und wieder tritt das Problem sporadisch auf
    UDP Befehle kommen und gehen von ULux und Sonos

    Kommentar

    • maxw
      Lox Guru
      • 25.08.2015
      • 1372

      #3
      Also ich habe seit Monaten die Netatmo Integration aus dem Wiki laufen, da wird bei in Summe 4 Stationen alle 4 Minuten auch eine größer Menge Daten übertragen. Bisher 0 Problem, allerdings hat der MS sonst nicht sehr viel zu tun. Ich habe beim entwickeln der SW aber den Eindruck gehabt, des der MS manchmal Daten verschluckt wenn man volle Kanne reinfährt. Deshalb mache ich nach jedem Telegramm 150ms (glaube ich, genauen Wert müsste ich nachsehen) Pause. Die einzelnen Telegramme sind eher lang mit vielen Werten, die Anzahl ist nicht so hoch, ca. ein Dutzend.

      Aber 1200 Wetter-Werte habe ich sicher nicht...
      Kann mir auch grad nicht vorstellen was das alles sein soll...
      Zuletzt geändert von maxw; 24.05.2016, 23:04.

      Kommentar

      • svethi
        Lebende Foren Legende
        • 25.08.2015
        • 6322

        #4
        Das sind natürlich jede Menge Daten. Es sind natürlich dann auch jede Menge VI's nötig. Wenn man jeden Wert verarbeitet, dann wären es ja 1200 VI's. Jeder einzelne Wert muss durch die Befehlserkennung der VI's. Die GarbargeCollectors arbeiten meistens in bestimmten Zeitabständen. Ich könnte mir vorstellen, dass da langsam der Speicher ausgeht. Das wird wahrscheinlich nur indirekt an den UDP-Eingängen liegen.
        aber sag mal, was machst Du mit den Texten per UDP im MiniServer? Die kannst Du doch da eh nicht verarbeiten, oder habe ich was verpasst?

        Gruß Sven
        Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

        Kommentar

        • Prof.Mobilux
          Supermoderator
          • 25.08.2015
          • 4762

          #5
          Die vielen Werte kommen zustande wenn man alle Daten der Station von Wunderground an den Miniserver sendet: aktuelle Daten, Vorhersage der nächsten 3 Tage und Vorhersage der nächsten 36 Stunden.

          Ich habe einfach alles, was bei Wunderground verfügbar ist an den Miniserver geschickt - egal ob man es weiterverarbeiten könnte oder nicht (Text). Wenn ich die Texte rausnehme, sind es aber immer noch 900 Werte. Dabei verarbeite ich aber nur vielleicht 10 Werte über die Befehlserkennung.

          Das Vorgehen muss man wirklich nochmal überdenken, mir geht es aber auch eher darum, dass ich so den Miniserver zum Absturz bringen kann! Das könnte man natürlich auch für einen gezielten Angriff verwenden...

          Im Monitor erhalte ich im Übrigen dann eine Fehlermeldung über "lines missing" (siehe Anhang).

          Loxone hat ja anscheinend eine Art UDP Proxy/Cache eingebaut, damit keine Pakete mehr verloren gehen können. Dadurch scheinen aber alle Pakete, die empfangen werden (ob später verwendet oder nicht) zwischengespeichert zu werden, was dann letztendlich dazu führt das der Speicher ausgeht.
          Angehängte Dateien
          Zuletzt geändert von Prof.Mobilux; 25.05.2016, 06:04.
          🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


          LoxBerry - Beyond the Limits

          Kommentar


          • svethi
            svethi kommentierte
            Kommentar bearbeiten
            Ich bringe den Fehler auch eher mit dem Neustart in Verbindung und nicht mir dem UDP. Das passt zeitlich ja gar nicht. Hat vllt Deine SD-Karte ein Problem?

          • Prof.Mobilux
            Prof.Mobilux kommentierte
            Kommentar bearbeiten
            Nein, seitdem ich das Senden der UDP-Pakete eingestellt habe sind die Neustarts weg. Testweise habe ich das Senden nach 24h wieder aktiviert und prompt einen Reboot gehabt. Hat also definitiv mit dem UDP zu tun.

            Mir ist klar, dass man den Miniserver nur per VPN ins Internet hängen SOLLTE (ist bei mir auch so), aber Loxone hat gerade eine große Sicherheitsoffensive gestartet (Firewall etc.), und da gehört dieses Problem definitiv dazu denke ich.

          • svethi
            svethi kommentierte
            Kommentar bearbeiten
            Ich sage ja nicht, dass die Neustarts nicht vom UDP kommen. Ich kann nur keinen Zusammenhang zwischen dem Fehler und dem UDP erkennen ;-)
        • maxw
          Lox Guru
          • 25.08.2015
          • 1372

          #6
          Habe es gerade nachgesehen, bei mir sind es ca. 70 Werte die alle 4 Minuten reinkommen und auch alle verarbeitet werden z.B. CO2 und Temp aktuell/min/max für einige Zimmer (mit Uhrzeit) ebenso für außen Temp, Regen, Wind alles aktuell/min/max und teilweise Stundenwerte sowie weiters Batteriezustand und Güte des Funksignals für alle Stationen. Aber ich schicke NICHTS was ich nicht auch brauche / weiterverarbeite.

          Kommentar

          • svethi
            Lebende Foren Legende
            • 25.08.2015
            • 6322

            #7
            Hmm, könnte auch sein, dass es an den nicht verarbeiteten Daten liegt. Wenn der Speicher erst im ZuordnungsCase wieder freigegeben wird, bleibt er bei "sinnlosen" Daten vllt blockiert.
            Sieh doch mal im Monitor nach, ob das bei jedem Schub mehr an Speicherbelegung wird und versuche es dann mal nur mit den Daten, die auch verarbeitet werden.
            Ist für mich auf alle Fälle ein Fall für die Softwareabteilung.
            Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

            Kommentar

            • Prof.Mobilux
              Supermoderator
              • 25.08.2015
              • 4762

              #8
              Loxone hatte ja das Problem, dass einige UDP.Pakete verloren gegangen sind (Version 5 oder 6 oder so). Das Problem ist jetzt behoben, aber dazu müssen sie (logischerweise) erst einmal ALLE empfangenen Pakete zwischenspeichern, um im Anschluss zu kontrollieren ob sie benötigt werden oder nicht. Wenn dann sozusagen per Floodangriff mehr Pakete hereinkommen als abgearbeitet werden ist der Speicher irgendwann voll (so könnte ich mir das zumindest erklären).

              Meiner Meinung nach muss die Firewall ein derartiges Aufkommen an UDP.Paketen erkennen und dann blocken. Problem ist dann natürlich wieder, dass Pakete verloren gehen könnten...

              Den Wetterserver kann ich entsprechend anpassen, aber ich melde das auf jeden Fall Loxone als "Security Issue".
              🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


              LoxBerry - Beyond the Limits

              Kommentar

              Lädt...