Mastodon
Zdjęcie okładkowe wpisu Cinema City Unlimited dla każdego (kto zna Twojego maila) [uaktualniono]

Cinema City Unlimited dla każdego (kto zna Twojego maila) [uaktualniono]

2
Dodane: 8 lat temu

Uwielbiam kino. Jestem w kinie kilka razy w tygodniu. Z tego powodu ucieszyła mnie oferta Unlimited od Cinema City. Oferta to, krótko mówiąc, abonament na kino. Widz płaci stałą stawkę miesięcznie, a w zamian może być w Cinema City na wszystkich seansach po kolei, każdego dnia. Znakomity pomysł, przystępna cena i dobry argument, żeby zobaczyć na dużym ekranie nawet te filmy, które być może w innym przypadku obejrzałoby się parę tygodni później w domu.

Niestety: kto raz próbował kupić bądź zarezerwować bilet do Cinema City online ten wie, że strona www jest mroczną stroną tej sieci. Tabelki z repertuarem latają po całym ekranie, otwierają się w przypadkowych oknach, a na telefonie nie da się niczego powiększyć ani przewinąć tak, żeby nie cisnąć telefonem o ścianę po kilku próbach.

Zamiast jednak stać bezczynnie i w polskim stylu narzekać na ten stan rzeczy postanowiłem zrobić coś innego. Postanowiłem pokazać Cinema City, jak to się powinno robić. Od 2008 roku nie robię właściwie nic innego poza tworzeniem aplikacji na iOS, naturalne więc było dla mnie, że to jest świetne pole do popisu. Zaprojektowałem prostą aplikację, w której miał być wyświetlony natywnie (nie w okrytym złą sławą web view) repertuar wybranego kina Cinema City. Użytkownik miał wybrać film, miejsca i w trzecim kroku otrzymać QR kod w postaci biletu do Walleta, znanego też jako Passbook (tak, żebym jak cywilizowany człowiek, mógł użyć Apple Watch do pokazania mojego biletu w kinie). Takiego flow programiści Cinema City nie przyśniliby w najśmielszych marzeniach o przyszłości nawet w noc po obejrzeniu Raportu Mniejszości.

Żeby zrobić taką nieoficjalną aplikację trzeba wstrzelić się w API, z którego korzysta strona www. Zacząłem więc analizować jak odbywa się ruch sieciowy w trakcie kupowania biletów na stronie Cinema City. Zajęło mi to jeden niedzielny poranek, po którym doszedłem do wniosku, że zamiast pisać aplikację do kupowania biletów powinienem poinformować użytkowników Unlimited, że ich danymi (w tym z kart kredytowych) zarządza wesoła gromada, która słyszała cokolwiek o bezpieczeństwie jedynie w filmach i postanowiła nie brać tego zbyt poważnie.

Oto, co się okazało: w jednym z kroków zalogowanie użytkownika polega na przekazaniu jego adresu e-mail jako jednego z argumentów w adresie URL. Innym argumentem jest po prostu ID wybranego seansu. To umożliwiło mi skonstruowanie takiego linka: http://serwer/akcja?film=xxx&email=yyy gdzie xxx to identyfikator seansu wzięty ze strony z repertuarem, a yyy to oczywiście e-mail klienta Unlimited. Ten link wysłałem do innej osoby, na urządzenie, które do mnie nie należy i na którym nigdy nie byłem zalogowany. Moje oczy były bardzo wielkie, kiedy po kliknięciu linka można było kontynuować proces rezerwowania miejsc. Żadna sesja logowania nie była wymagana. W ostatnim kroku, z potwierdzeniem operacji, wyświetlone zostaje imię, nazwisko znany nam już e-mail yyy i numer telefonu (!) klienta, któremu właśnie, bez jego wiedzy, kupujemy bilety. Po potwierdzeniu wyświetla się bilet z QR kodem. Na szczęście przy próbie dokupienia płatnych biletów (ten bilet Unlimited jest w ramach abonamentu darmowy) zostajemy przekierowani do zewnętrznego systemu płatności, a więc nikt nie skorzysta z karty kredytowej klienta. Można tym sposobem zrobić komuś na złość i narezerwować mu biletów na kompromitujące komedie. Co dużo poważniejsze, można poznać kogoś numer telefonu na podstawie maila, a to już poważny wyciek danych osobowych.

No cóż, może to wszystko jest nieistotne, skoro strona Cinema City i tak nie korzysta z protokołu https. Nasze hasło zatem w trakcie logowania widzi każdy w internecie, więc to tak, jakby istnienie hasła było bez znaczenia, prawda?

Ciekawe co na to partner akcji Unlimited: MasterCard. Oni na pewno mają coś do powiedzenia w sprawie bezpieczeństwa.

Dziura w Cinema City wynika z lenistwa i braku ogarnięcia ze strony programistów, którzy musieli przenieść zalogowanego użytkownika z jednego serwera na drugi i poszli drogą na skróty przekazując maila w linku, zamiast przenieść sesję między swoimi serwerami.

Ten błąd zapewne zostanie przez Cinema City załatany, może programiści będą w linku wymagali też numeru telefonu do zweryfikowania użytkownika, a może, o zgrozo, będą tam przesyłali też hasło, ale problem jest dużo szerszy, znam go od podszewki jako członek wielu zespołów programistycznych: ci sami “specjaliści” tę dziurę załatają tymi samymi, leniwymi sposobami.

Trudno po takim zespole oczekiwać w przyszłości stabilności i bezpieczeństwa, a co dopiero takich bajerów, jak choćby wsparcie Walleta iOS.

Być może pora uruchomić plan B?

Cinema-City-Twitter

Spotykam się z tym zagadnieniem ilekroć zespół programistów zaczyna się rozrastać. Zawsze trafiają się słabsze ogniwa. Ktoś kogoś przyjmuje do pracy z litości i licząc na to, że skoro się dopiero uczy, to się może w końcu kiedyś nauczy, lub, co gorsza, ze względu na wymagania finansowe. Pracowałem z wieloma programistami i niestety to jest jeden z tych zawodów, którego nie wystarczy bardzo chcieć uprawiać. Nadają się do tego tylko niektórzy ludzie i pozostałych trzeba odsiewać, bo inaczej z taką jakością systemów informatycznych, które tworzymy wokół siebie, wszyscy skończymy w jaskiniach. Ktoś przede mną już zauważył ten problem:

Jeśli chcesz zbudować drużynę graczy najwyższej klasy, musisz być bezwzględny. “Bardzo łatwo jest, w miarę rozrastania się zespołu, przymknąć oko na kilku graczy klasy B, a oni potem przyciągają następnych graczy klasy B i zanim się obejrzysz, będziesz miał nawet paru z C”.

– Walter Isaacson, “Steve Jobs”, wydawnictwo Insignis Media 2011r, s. 234, przekład Przemysław Bieliński


Uaktualnienie – 18/05/2016, 15:00

Dodano screenshota tweeta i link do niego.

Zapraszamy do dalszej dyskusji na Mastodonie lub Twitterze .

Komentarze: 2

Witam. Postanowiłam napisać, bo szukam pomocy gdzie się da. Chciałam zakupić karte Unlimited do Cinema City, wypełniłam formularz, dotarłam do płatności i na tym koniec….komunikat o nieprawidlowych danych karty i brak możliwości potwierdzenia. Kartę debetową otrzymałam dwa dni temu, ma możliwość płatności internetowych….bank PKO bp, karta Visa. Liczne interewncje w banku i na infolinii Unlimited nie pomogły…teoretycznie wszystko jest ok. Zasugerowano problem z numerem cvv , po stronie kina ….nie rozumiem…problemy sie rozwiązuje. My chcemy kupić, kino chce sprzedać ….ale teraz widzę, że im nie zależy. Pomocy, bo zwariuję !!!!!