Hoje, analisaremos dois casos ao mesmo tempo - os dados de clientes e parceiros de duas empresas completamente diferentes acabaram sendo de domínio público "graças" aos servidores abertos da Elasticsearch com logs de sistemas de informação (IS) dessas empresas.

No primeiro caso, são dezenas de milhares (ou talvez centenas de milhares) de ingressos para vários eventos culturais (teatros, clubes, passeios no rio etc.) vendidos através do sistema Radario ( www.radario.ru ).
No segundo caso, esses são os dados de viagens turísticas de milhares (talvez dezenas de milhares) de viajantes que compraram passeios através de agências de viagens conectadas ao sistema Sletat.ru ( www.sletat.ru ).
Observo imediatamente que não apenas os nomes das empresas que permitiram a disponibilização pública dos dados diferem, mas também a abordagem dessas empresas em reconhecer o incidente e a reação subsequente a ele. Mas as primeiras coisas primeiro ...
: . . , .
Caso Um. Radario
Na noite de 06/06/2019, nosso sistema encontrou o servidor Elasticsearch , de propriedade do serviço de venda de ingressos eletrônicos Radario , em acesso gratuito .
De acordo com a triste tradição já estabelecida, o servidor continha logs detalhados do sistema de informações do serviço, a partir dos quais era possível obter dados pessoais, logins e senhas de usuários, além de ingressos eletrônicos diretamente para vários eventos em todo o país.

O volume total de logs excedeu 1 TB.
De acordo com o mecanismo de busca Shodan, o servidor está em domínio público desde 11/03/2019. Notifiquei os funcionários Radario em 06/05/2019 às 22:50 (horário de Moscou) e em 07/07/2019 por volta das 09:30 o servidor ficou indisponível.
Os logs continham um token de autorização universal (único) que fornecia acesso a todos os tickets comprados por meio de links especiais, no formato:
http://radario.ru/internal/tickets/XXXXXXXX/print?access_token=******JuYWw6MDIzOWRjOTM1NzJiNDZjMTlhZGFjZmRhZTQ3ZDgyYTk http://radario.ru/internal/orders/YYYYYYY/print?access_token=******JuYWw6MDIzOWRjOTM1NzJiNDZjMTlhZGFjZmRhZTQ3ZDgyYTk
O problema também consistia no fato de que a contagem de tickets era usada através da numeração de pedidos e, simplesmente classificando o número do ticket ( XXXXXXXX ) ou o pedido ( AAAAAAA ), era possível obter todos os tickets do sistema.
Para verificar a relevância do banco de dados, até comprei honestamente o bilhete mais barato:


e depois descobri-lo em um servidor público nos logs IP:
http://radario.ru/internal/tickets/11819272/print?access_token==******JuYWw6MDIzOWRjOTM1NzJiNDZjMTlhZGFjZmRhZTQ3ZDgyYTk
Eu também gostaria de enfatizar que os ingressos estavam disponíveis tanto para eventos passados quanto para aqueles que ainda estão sendo planejados. Ou seja, um invasor em potencial pode usar o ticket de outra pessoa para chegar ao evento planejado.
Em média, em cada índice do Elasticsearch que contém logs para um dia específico (de 24 de janeiro de 2019 a 7 de maio de 2019), havia de 25 a 35 mil tickets.
Além dos ingressos, o índice também continha nomes de usuário (endereços de email) e senhas de texto para acesso às contas pessoais dos parceiros da Radario que vendem ingressos para seus eventos por meio deste serviço:
Content: \"ReturnUrl=&UserEmail=***@yandex.ru&UserPassword=***\"
No total, foram encontrados mais de 500 pares de login / senha. Nas contas pessoais dos parceiros, você pode ver estatísticas sobre a venda de ingressos:

Além disso, no domínio público, havia nomes completos, números de telefone e endereços de e-mail dos compradores que decidiram devolver os ingressos comprados anteriormente:
"Content": "{\"name\":\"***\",\"surname\":\"*** \",\"middleName\":\" \",\"passportType\":1,\"passportNumber\":\"\",\"passportIssueDate\":\"11-11-2011 11:11:11\",\"passportIssuedBy\":\"\",\"email\":\"***@mail.ru\",\"phone\":\"+799*******\",\"ticketNumbers\":[\"****24848\",\"****948732\"],\"refundReason\":4,\"comment\":\"\"}"
Em um dia selecionado aleatoriamente, mais de 500 desses registros foram descobertos.
Recebi uma resposta ao alerta do diretor técnico da Radario:
Sou o CTO Radario e gostaria de agradecer por detectar o problema. O acesso ao elástico, como você sabe, foi fechado e estamos resolvendo a questão da reemissão de tickets para os clientes.
Um pouco mais tarde, a empresa fez uma declaração oficial:
Foi descoberta uma vulnerabilidade no sistema de bilhetagem eletrônica Radario que levou ao vazamento de dados de atendimento ao cliente em tempo hábil, disse Kirill Malyshev, diretor de marketing da empresa, à Agência de Notícias de Moscou.
“Descobrimos realmente uma vulnerabilidade na operação do sistema associada a atualizações regulares, que foram corrigidas imediatamente após a detecção. Como resultado da vulnerabilidade, sob certas condições, ações hostis de terceiros podem levar ao vazamento de dados, mas nenhum incidente foi registrado. No momento, todas as falhas foram eliminadas ”, disse K. Malyshev.
O representante da empresa enfatizou que foi decidido reemitir todos os ingressos vendidos durante a resolução do problema, a fim de eliminar completamente a possibilidade de qualquer fraude em relação aos clientes do serviço.
Alguns dias depois, verifiquei a disponibilidade dos dados nos links vazados - o acesso aos tickets "em destaque" estava realmente coberto. Na minha opinião, essa é uma abordagem profissional competente para resolver o problema do vazamento de dados.
Caso Dois. "Fly.ru"
No início da manhã de 15/05/2019, o DeviceLock Data Breach Intelligence revelou um servidor público do Elasticsearch com logs de um determinado IP.

Mais tarde, foi estabelecido que o servidor pertence ao serviço para a seleção de tours "Fly.ru".
A partir do índice cbto__0, foi possível obter milhares (11,7 mil, incluindo duplicatas) de endereços de e-mail, além de algumas informações de pagamento (custo dos passeios) e informações de viagens (quando, onde, passagem aérea para todos os viajantes incluídos no passeio etc.) ) no valor de cerca de 1,8 mil registros:
"full_message": " : {\"SuccessReturnUrl\":\"https://sletat.ru/tour/7-1939548394-65996246/buy/?ClaimId=b5e3bf98-2855-400d-a93a-17c54a970155\",\"ErrorReturnUrl\":\"https://sletat.ru/\",\"PaymentAgentId\":15,\"DocumentNumber\":96629429,\"DocumentDisplayNumber\":\"4451-17993\",\"Amount\":36307.0,\"PaymentToolType\":3,\"ExpiryDateUtc\":\"2020-04-03T00:33:55.217358+03:00\",\"LifecycleType\":2,\"CustomerEmail\":\"XXX@mail.ru\",\"Description\":\"\",\"SettingsId\":\"8759d0dd-da54-45dd-9661-4e852b0a1d89\",\"AdditionalInfo\":\"{\\\"TourOfficeAdditionalInfo\\\":{\\\"IsAdditionalPayment\\\":false},\\\"BarrelAdditionalInfo\\\":{\\\"Tickets\\\":[{\\\"Passenger\\\":{\\\"FIO\\\":\\\"XXX VIKTORIIA\\\"},\\\"ReservationSystem\\\":null,\\\"TicketNumber\\\":null,\\\"IsRefundPossible\\\":false},{\\\"Passenger\\\":{\\\"FIO\\\":\\\"XXX ANDREI\\\"},\\\"ReservationSystem\\\":null,\\\"TicketNumber\\\":null,\\\"IsRefundPossible\\\":false},{\\\"Passenger\\\":{\\\"FIO\\\":\\\"XXX Andrei\\\"},\\\"ReservationSystem\\\":null,\\\"TicketNumber\\\":null,\\\"IsRefundPossible\\\":false}],\\\"Segments\\\":[{\\\"Flight\\\":\\\"5659\\\",\\\"AviaCompany\\\":null,\\\"AviaCompanyIataCode\\\":null,\\\"DepartureCity\\\":\\\"LED\\\",\\\"DepartureAirport\\\":\\\"LED\\\",\\\"DepartureAirportIataCode\\\":\\\"LED\\\",\\\"DepartureDate\\\":\\\"2019-04-11T02:45:00\\\",\\\"DepartureTime\\\":null,\\\"ArrivalCity\\\":\\\"SHJ\\\",\\\"ArrivalAirport\\\":\\\"SHJ\\\",\\\"ArrivalAirportIataCode\\\":\\\"SHJ\\\",\\\"ArrivalDate\\\":\\\"2019-04-11T09:40:00\\\",\\\"ArrivalTime\\\":null,\\\"FareCode\\\":null},{\\\"Flight\\\":\\\"5660\\\",\\\"AviaCompany\\\":null,\\\"AviaCompanyIataCode\\\":null,\\\"DepartureCity\\\":\\\"SHJ\\\",\\\"DepartureAirport\\\":\\\"SHJ\\\",\\\"DepartureAirportIataCode\\\":\\\"SHJ\\\",\\\"DepartureDate\\\":\\\"2019-04-14T10:45:00\\\",\\\"DepartureTime\\\":null,\\\"ArrivalCity\\\":\\\"LED\\\",\\\"ArrivalAirport\\\":\\\"LED\\\",\\\"ArrivalAirportIataCode\\\":\\\"LED\\\",\\\"ArrivalDate\\\":\\\"2019-04-14T15:50:00\\\",\\\"ArrivalTime\\\":null,\\\"FareCode\\\":null}]},\\\"Tickets\\\":[{\\\"Passenger\\\":{\\\"FIO\\\":\\\"XXX VIKTORIIA\\\"},\\\"ReservationSystem\\\":null,\\\"TicketNumber\\\":null,\\\"IsRefundPossible\\\":false},{\\\"Passenger\\\":{\\\"FIO\\\":\\\"XXX ANDREI\\\"},\\\"ReservationSystem\\\":null,\\\"TicketNumber\\\":null,\\\"IsRefundPossible\\\":false},{\\\"Passenger\\\":{\\\"FIO\\\":\\\"XXX Andrei\\\"},\\\"ReservationSystem\\\":null,\\\"TicketNumber\\\":null,\\\"IsRefundPossible\\\":false}],\\\"Segments\\\":[{\\\"Flight\\\":\\\"5659\\\",\\\"AviaCompany\\\":null,\\\"AviaCompanyIataCode\\\":null,\\\"DepartureCity\\\":\\\"LED\\\",\\\"DepartureAirport\\\":\\\"LED\\\",\\\"DepartureAirportIataCode\\\":\\\"LED\\\",\\\"DepartureDate\\\":\\\"2019-04-11T02:45:00\\\",\\\"DepartureTime\\\":null,\\\"ArrivalCity\\\":\\\"SHJ\\\",\\\"ArrivalAirport\\\":\\\"SHJ\\\",\\\"ArrivalAirportIataCode\\\":\\\"SHJ\\\",\\\"ArrivalDate\\\":\\\"2019-04-11T09:40:00\\\",\\\"ArrivalTime\\\":null,\\\"FareCode\\\":null},{\\\"Flight\\\":\\\"5660\\\",\\\"AviaCompany\\\":null,\\\"AviaCompanyIataCode\\\":null,\\\"DepartureCity\\\":\\\"SHJ\\\",\\\"DepartureAirport\\\":\\\"SHJ\\\",\\\"DepartureAirportIataCode\\\":\\\"SHJ\\\",\\\"DepartureDate\\\":\\\"2019-04-14T10:45:00\\\",\\\"DepartureTime\\\":null,\\\"ArrivalCity\\\":\\\"LED\\\",\\\"ArrivalAirport\\\":\\\"LED\\\",\\\"ArrivalAirportIataCode\\\":\\\"LED\\\",\\\"ArrivalDate\\\":\\\"2019-04-14T15:50:00\\\",\\\"ArrivalTime\\\":null,\\\"FareCode\\\":null}]}\",\"FinancialSystemId\":9,\"Key\":\"18fe21d1-8c9c-43f3-b11d-6bf884ba6ee0\"}"
A propósito, os links para passeios pagos estão funcionando:

Nos índices com o nome graylog_, em texto simples, estavam os logins e as senhas das agências de viagens conectadas ao sistema Sletat.ru e da venda de passeios aos clientes:
"full_message": "Tours by request 155213901 added to local cache with key 'user_cache_155213901' at 5/6/2019 4:49:07 PM, rows found 0, sortedPriceLength 215. QueryString: countryId=90&cityFromId=1265&s_nightsMin=6&s_nightsMax=14&stars=403%2c404&minHotelRating=1¤cyAlias=RUB&pageSize=300&pageNumber=1&s_showcase=true&includeOilTaxesAndVisa=0&login=zakaz%40XXX.ru&password=XXX, Referer: , UserAgent: , IP: 94.154.XX.XX."
De acordo com minhas estimativas, várias centenas de pares de login / senha foram acesos.
Na conta pessoal da agência de viagens no portal agent.sletat.ru, foi possível obter dados do cliente, incluindo números de passaporte, números de passaporte, datas de nascimento, nome, números de telefone e endereços de e-mail.

Notifiquei o serviço Sletat.ru em 15/05/2019 às 10:46 (horário de Moscou) e depois de algumas horas (até 16:00) o servidor Elasticsearch desapareceu do acesso gratuito. Mais tarde, em resposta a uma publicação no Kommersant, o gerenciamento do serviço fez uma declaração muito estranha na mídia:
O chefe da empresa, Andrei Vershinin, explicou que o Sletat.ru fornece a vários dos maiores operadores turísticos parceiros o acesso ao histórico de consultas no sistema de busca. E ele sugeriu que a DeviceLock a recebesse: "No entanto, no banco de dados especificado, não existem dados de passaporte de turistas, logins e senhas de agências de viagens, dados de pagamento etc." Andrei Vershinin observou que "Sletat.ru" ainda não recebeu nenhuma evidência de tais alegações sérias. “Agora estamos tentando entrar em contato com o DeviceLock. Acreditamos que isso é uma ordem. Algumas pessoas não gostam do nosso rápido crescimento ", acrescentou. "
Como mostrado acima, logins, senhas e dados de passaporte de turistas estão em domínio público há bastante tempo (pelo menos a partir de 29/03/2019, quando o servidor da empresa foi disponibilizado publicamente pela primeira vez pelo mecanismo de busca Shodan). Obviamente, ninguém nos contatou. Espero que pelo menos as agências de viagens que eles notificaram sobre o vazamento e as obrigue a mudar de senha.
Sempre são encontradas notícias sobre vazamentos de informações e informações privilegiadas no meu canal do Telegram, “ Vazamentos de informações ”.