ウクライナ最大の航空会社の便の乗客リストを取得します

この記事では、ウクライナ最大の航空会社であるウクライナの国際航空会社のフライトの乗客リストを取得できる脆弱性を発見した方法と、そのような情報が公開されているという事実に対する会社自体の態度に焦点を当てます。



1か月以上前、休暇の準備を始め、チケットを予約する時間になりました。 だから私 UIAのウェブサイトに行きました。 飛行機の座席を選択するプロセスで、座席のレイアウトを表示するはずのページがまったく読み込まれませんでした。







Google Chromeで開発者ツールを開いて、問題が何であるかを理解しようとすることにしました。 サーバーリクエストを調べたところ、サーバーが利用可能な場所に関する情報を返すことがわかりました。



いくつかの異なるブラウザーを試しましたが、私はまだ問題を解決しませんでしたが、セッションCookieはGoogle Chromeでのみ利用可能であったという事実にもかかわらず、利用可能な場所のリストを返すリクエストがすべてのブラウザーで成功したことに気付きました。



要求は次のとおりです。



https://bookapi.flyuia.com/ancillary/seatmap?pnr=XXXXXX&currency=USD&flyuiacountrycode=uk&flyuialanguagecode=ru&locale=RU
      
      





ここで、XXXXXXはPNRまたはいわゆる予約コードです。

サーバーの応答は、すべてのブラウザーで次のとおりでした。



 [ { "paxDetails" : { "uniqueId" : "2", "firstName" : "IVANOV", "title" : "- (Ms.)", "lastName" : "IVAN", "paxType" : "Adult", "cartPaxId" : "b1da2ebf-4525-35bd-afc1-b1f448132ad3" }, "segmentDetails" : [ { "company" : "PS", "bookingClass" : "B", "flightNumber" : "1234", "departureAirport" : "KBP", "arrivalAirport" : "JFK", "departureDateTime" : "2018-02-01T00:05", "operatingAirline" : "PS" } ], "segmentId" : "1", "isAvailableForCheckIn" : true, "seat_rows" : [ { "seats" : [ { "id" : "aab4ca38-2c28-1f13-359d-4ad264d53a0e_1e80aae3-a68b-44de-ae14-aff839563612", "occupation" : "AVAILABLE", "letter" : "A", "rowNumber" : 4, "seatCharacteristics" : [ "W", "CH", "EK", "H", "for_infant" ], "price" : { "amount" : "16.00", "currency" : "USD" }, "class" : "ECONOMY", "seat_type" : "SEAT", "ticket_value" : "FD3A" },...]
      
      





そしてこれは、PNRコードによってのみ、どのデバイスからでもすべてのユーザーが乗客情報を利用できることを意味しました。 したがって、予約番号を知っているユーザーは、姓、名、成人または子供、フライト番号、出発空港と到着空港、出発時間などの乗客情報を取得できます。



私はこのサービスが他にどのような「サプライズ」を格納するのかと思っていました。

発券プロセスを継続して、荷物のチェックインポイントを選びました。







リクエストは次のようになりました。



 https://bookapi.flyuia.com/ancillary/luggage?pnr=XXXXXX&currency=USD&locale=RU
      
      





ただし、サーバーの応答には、ユーザーに関するもう少しの情報が含まれています。



 [ { "paxDetails" : { "uniqueId" : "2", "firstName" : "ivan", "title" : "-", "lastName" : "ivanov", "paxType" : "Adult", "dateOfBirth" : "1978-10-20", "cartPaxId" : "a30928c1-219b-8d15-8345-b517f0fda360" },...]
      
      





したがって、乗客の生年月日などの乗客に関する情報が追加されました。

実際、これは1人の乗客についてではなく、この予約に含まれるすべての乗客についてです。 たとえば、私は家族全員のためにチケットを作成し、上記のリクエストには私だけでなく、配偶者や子供に関する情報も含まれていました。



一般的に、個人情報の保護に関するウクライナの法律に関しては、個人

データは、特定された、または具体的に特定できる個人に関する情報または情報の集まりです。 上記のリクエストで利用可能なデータにより、場合によっては生年月日がなくても個人を一意に識別することができます。 これは、予約に複数の人に関するデータが含まれている場合です。 そのような人は少なくとも馴染みがあり、多くの場合親relativeなので、ソーシャルネットワークを使用してそれらを識別することは難しくありません。 したがって、私の意見では、既存のデータは個人的なものとみなすことができ、それらへのパブリックアクセスの事実は個人データの保護に関する法律に違反しています。 しかし、私たちは気を散らされず、継続します。



サービスの「機能」をさらに調べて、支払いページに移動しました。 ここで新しい驚きが待っていました。 リクエストの形式は次のとおりです。



 https://bookapi.flyuia.com/payportal/transaction/123456?flyuiacountrycode=ua&flyuialanguagecode=ru&locale=RU
      
      





また、セッションCookieのないすべてのブラウザーで実行されました。



 { "id" : 211334, "payportal" : "UkrEximBank", "creationTime" : "2017-12-25 14:32:13", "status" : "INIT", "amount" : 15578.00, "currency" : "UAH", "errorCode" : 0, "errorCategory" : "UNDEFINED", "data" : "{\"Locale\":\"ru_RU\",\"ORDER\":\"000000450187\",\"PosId\":\"12e66438b256e10f74424133\",\"Pnr\":\"XXXXXX\",\"fopType\":\"CREDIT_CARD\",\"Country\":\"492ac4aae7f43c6e6a4336f9\",\"Passenger\":\"ivanov ivan\",\"PayerEmail\":\"ivanov.ivan@gmail.com\",\"BackReference\":\"https://book.flyuia.com/RU/default/paymentstatus\",\"OaDRoute\":\"01Feb18JFKKBP-10Feb18KBPJFK\",\"LANG\":\"UKR\",\"DESC\":\"XXXXXX, ivanov ivan, 01Feb18JFKKBP-10Feb18KBPJFK\"}",...}
      
      





リクエストにはさまざまな支払い情報が含まれていますが、私たちにとっては、PNRコードなどのパラメーターの可用性がより重要です。 ご覧のように、リクエストには増分トランザクションIDが含まれています。つまり、この値を多少増やした場合、攻撃者は実際の予約コードを取得し、以前のリクエストでそれらを使用して、ブルートフォース攻撃を使用せずにPNRコードを使用して会社のクライアントに関する詳細情報を取得できます。



その結果、すべての脆弱なリクエストのセットにより、攻撃者は、リソース管理者に通知することなく、リアルタイムで航空便の乗客のリストを作成できるサービスを編成できます。 ただし、乗客リストは公開情報ではなく、安全上の理由で航空会社によって保護されており、一部の国では法律によって保護されています。 このようなデータへのアクセスは通常、会社の従業員と特定の政府機関のみが利用できます。 さらに、UIAのカスタマーサポートに連絡して、これらの脆弱性の存在を連絡し、アプリケーションの状態を明確にし、連絡する過程で驚きました。







しかし、顧客の要求に応じてフライトの乗客のリストを提供するかどうか尋ねられたとき、彼らは私に否定的に答えました。



会社からのこのような奇妙な反応にもかかわらず、開発者は1か月以内に上記の脆弱性をすべて排除し、クライアントとして安心しました。



別の点として、他の大企業の場合と同様に、UIAには見つかった脆弱性を報告するための個別の通信チャネルがないという事実に注意を喚起したいと思います。 セキュリティサービスまたは責任のある開発者と私をつなぐという私のリクエストに対して、彼らは私を拒否しました。







要約すると、私は次のように言いたいです。



航空会社は、空港や航空機内だけでなく、ネットワーク上でも乗客の安全を守る必要があります。 結局のところ、乗客データは非常に機密情報です。 盗賊はそれを所有しているため、被害者が不在の間に被害者のアパートを強奪することができます。 元配偶者は、自分の動きを知って、元妻を追跡できます。 予約コードを受け取った攻撃者は、航空会社のウェブサイトから乗客登録を大幅にキャンセルできます。これにより、フライトが遅れる可能性があります。 ビジネスの競合他社の動きに関する公開情報は、企業に損害を与える可能性があります。 このような情報を悪意を持って使用する方法は多数あり、それに応じて保護する必要があります。



All Articles