Zum Inhalt springen

Auf einmal auf dem AWS S3-Bucket von Ninebot/Segway

Dass ich finde, dass der Segway Navimow viel zu früh auf den Markt geworfen wurde, habe ich in früheren Artikeln (Hier und Hier) ja bereits erwähnt – aber ich wollte dennoch rudimentäre Funktionen aus dem Home Assistant heraus steuern können: Starten, Stoppen, die Akkuladung auslesen und auch die Karte extrahieren wo das Gerät bereits unterwegs war.

Segway bietet aktuell nur die Möglichkeit den Mähroboter über deren hauseigene „Navimow App“ heraus zu steuern, weshalb ich den Datenverkehr via Proyxman am iPhone mitgeschnitten habe, um mir ein Bild von deren Kommunikation zu machen.

Ich wollte die Steuerfunktionen in Node-Red nachbauen, wie ich es auch bei meinen Fenix TFT Wifi Thermostaten gemacht habe. Leider bin ich daran gescheitert, da Segway nach der Authentifizierung zwar JWT-Token mit der App austauscht, aber diese in der weiteren Kommunikation vermutlich nur noch in der App verschlüsselt weiterverwendet werden und ich die Kommunikation so nicht ohne weiteres nachbauen konnte ohne die App reverse zu engineeren – ich war ziemlich frustriert.

Ein paar Tage später war ich mit Freunden auf dem Weg in die Niederlande im Zug und hatte eine freie Minute, mich nochmal mit dem Projekt zu beschäftigen. Ich habe das Problem mit der kryptischen Kommunikation gerade meinen Freunden im Zug erklärt, als einer bei einem der Responses stutzig wurde:

„Moment, was ist das?“

Schnell war klar, dass es sich dabei um Zugangsdaten für einen AWS S3 Bucket handelte. Noch recht interessiert, was wir finden würden, haben wir uns auf auf dem S3 Bucket mit den Zugangsdaten aus der Response eingeloggt und landeten in einem logging-Verzeichnis, in dem die Smartphone App eigentlich ihre Protokolle ablegt. Durch die HTTP-Kommunikation war mir schon klar, welche UserID ich hatte und habe so auch schnell meine Protokolle der letzten Wochen gefunden. Beim Stöbern habe ich GPS-Koordinaten, Zeitstempel und recht detaillierte Infos zum Ablauf des Mähroboters gefunden.

Warte… wir können auch Logs der anderen User sehen… und öffnen…

Nicht gut. Das soll bestimmt so nicht sein.

Wir sehen durch die Anzahl der Ordner wie viele europäische Kunden den Segway Navimow besitzen und durch die Erfahrung aus unseren eigenen Logs wissen wir auch, dass wir für jeden anderen Kunden auch deren GPS-Koordinaten sehen können.

Der Zug hält und wir müssen umsteigen.

Im Hinterkopf habe ich immer noch das ungute Gefühl, dass so jeder genau weiß, wo in Europa die Geräte in den Gärten stehen.

Wir kommen in den Niederlanden an und gehen erstmal getrennte Wege. In einem Cafe setze ich mich nochmal hin und logge mich wieder in das S3-Bucket ein. Diesmal aber gebe ich beim Login aus Versehen nur die Zugangsdaten ein, aber nicht den Ziel Bucket und sehe auf einmal eine andere Ordnerstruktur, als ich erwartet habe.

Holy shit…

Eigentlich will ich endlich Urlaub haben….

Mir wird klar, Segway baut ja nicht nur Scooter und neuerdings Rasenmäher, sondern auch sehr viele andere Geräte, von denen ich bis dahin zum Teil noch nie gehört hatte.

Jetzt wird mir etwas mulmig zumute und ich rufe meinen Freund nochmal an und kläre ab, was wir jetzt machen sollten. Logfiles sind das eine, das hier hat eine andere Brisanz.

Auf jeden Fall sofort das Security-Team von Segway kontaktieren und den Bucket schließen lassen. Bestimmt will Segway so etwas nicht offen im Internet stehen haben.

Leichter gesagt als getan. Es gibt keine Security-Kontaktadresse und auch nach längerer Recherche weiß ich nicht, an wen ich mich wenden soll.

Weil ich aber schon viele Tickets wegen Problemen mit meinem Roboter bei Segway offen hatte, habe ich ein weiteres Ticket eröffnet, diesmal mit der dringenden Bitte, mir sofort einen Kontakt zum Security-Team zu geben.

Der first level Support war erst einmal gar nicht hilfreich und bat mich, die Probleme an ihn zu richten, was ich ablehnte. Ich wollte direkt mit einem Entwickler oder Security Mitarbeiter schreiben und keine weitere „wir kümmern uns“ Nachricht bekommen.

Weil ich gegenüber dem Support nicht mit Infos rausrücken wollte, dieser mir aber nicht einfach so die Kontaktadressen geben wollte fragte dieser irgendwann nach „proof“, woraufhin ich eine .txt Datei mit meiner Ticketnummer auf dem Frankfurter S3 Bucket abgelegt habe und ihm einen Link dazu geschickt habe:

Dear Support Team,

i think this is proof enough, please see the ticket number:

https://fra-navimow-prod.s3-eu-central-1.amazonaws.com/proof.txt

Please give me the contact of your security team now.

Mir war nicht ganz klar, wie der Support jetzt vorgehen würde, aber einen Tag später hatte ich eine Mail von Ninebot im Postfach, in der sich ein Mitarbeiter vom Security-Team vorgestellt hat und Informationen zu dem Problem haben wollte.

Ab hier lief die Sache sehr entspannt und ich war froh, endlich mit jemandem zu schreiben, der das Problem lösen konnte.

Ich fasste das Problem kurz zusammen, wie ich an die Zugangsdaten gekommen bin und dass diese scheinbar auch in anderen Teilbereichen von Segway/Ninebot lesend und schreibend funktionieren.

Der Bucket war einen Tag später geschlossen und auch meine neuen Proxyman Mitschnitte enthielten keine AWS Credentials mehr.

Die Sache war damit behoben, wäre aber deutlich schneller vom Tisch gewesen, wenn Segway/Ninebot gleich passende Kontaktinformationen online gestellt hätte. Keine Chance, wenn ich nicht sowieso schon Kontakt mit dem Segway-Support wegen anderer Probleme gehabt hätte.

Als kleines Goodie habe ich von Segway ein paar Wochen später einen Ultraschallsensor als Add-On für meinen Navimow im Briefkasten gehabt. Vielen Dank auf jeden Fall dafür.

Das Review zum Navimow Ultraschallsensor findet ihr hier

Gefällt dir der Beitrag?

Schreibe dich in den Newsletter ein und bekomme in unregelmäßigen Abständen zusammenfassende Newsletter mit den neuesten Beiträgen. Ich halte es minimalistisch. Versprochen.
Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

*