セキュリティ研究者のIan Carroll氏は8月29日(米国時間)、自身のWebサイト「Seats.aero」の記事「Bypassing airport security via SQL injection」において、アメリカ合衆国運輸保安庁(TSA: Transportation Security Administration)のセキュリティチェックを回避するSQLインジェクションの脆弱性を発見したと伝えた。一部の航空会社が使用するFlyCASSのシステムに脆弱性が存在し、架空の従業員を追加してKCM/CASSシステムに承認させることができたとみられる。

  • Bypassing airport security via SQL injection

    Bypassing airport security via SQL injection

KCMおよびCASSシステムとは

TSAが管理するセキュリティチェックには、航空会社の従業員のセキュリティチェックをパスできるようにするKCM(Known Crewmember)と呼ばれる仕組みが存在する。従業員は業務時間以外(米国内の移動に限る)においても専用レーンからKCMバーコードを提示するか、TSAのセキュリティ担当者に従業員番号と航空会社名を伝えることでチェックを回避できる(参考:「Known Crewmember | Transportation Security Administration」)。

研究者によると、コックピットへのアクセスにも「Cockpit Access Security System(CASS)」と呼ばれる同様の仕組みが存在するという。これはパイロットを含む従業員がコックピット内のジャンプシート(普段使用されない補助シート)を通勤などに使用する際に、認可された人物か確認する仕組みとされる。

脆弱性の概要

研究者は、小規模な航空会社がKCMやCASSシステムにどのようにしてアクセスしているのか興味を持ち、調査を実施したという。その結果、Webベースのインタフェースを提供しているFlyCASSを発見。FlyCASSのWebサービスには航空会社向けのログインページが用意されており、誰でもアクセス可能とされる。

通常であれば、部外者はログインできず何もできない。しかしながら、研究者は確認のためユーザー名にシングルクォートだけを入力した。すると、残念なことにMySQLエラーが表示されたという。これは入力をサニタイズまたはエスケープ処理していないことを意味しており、SQLインジェクションの可能性を示している。

  • MySQLエラーを表示する画面 - 引用:Seats.aero

    MySQLエラーを表示する画面 引用:Seats.aero

そこで、研究者はSQLインジェクション専用のペネトレーションテストツール「sqlmapproject/sqlmap」を使用して脆弱性を特定。ユーザー名「' or '1'='1」、パスワード「') OR MD5('1')=MD5('1」を入力し、管理者としてログインに成功している。

次に研究者は「Test TestOnly」という氏名の従業員を追加し、KCMおよびCASSへのアクセス許可が可能か実験している。その結果、KCMおよびCASS双方の使用が承認されたと報告している。

  • 架空の人物「Test TestOnly」を承認した画面 - 引用:Seats.aero

    架空の人物「Test TestOnly」を承認した画面 引用:Seats.aero

責任ある開示(Responsible Disclosure)

研究者は責任のある情報開示のためFlyCASSに連絡を取ろうとしたが、担当者が1人のみと推測されたため、影響を考慮して4月23日(米国時間)、アメリカ合衆国国土安全保障省(DHS: United States Department of Homeland Security)に報告した。その結果、「非常に深刻」と評価され、FlyCASSはKCMおよびCASSの使用を一時的に禁止された。その後、問題は修正されている。

脆弱性の修正後、研究者は情報開示の調整を試みたが、DHSからの連絡は途絶え、TSAの広報室は脆弱性の発見を否定したという。このような隠蔽とも捉えられかねない対応は、研究者の努力と能力を否定することになり、将来、発見の証明として脆弱性の修正前に情報を公開することにつながる可能性がある。

このような事態を防止するために関係者の間では「責任ある開示(Responsible Disclosure)」の取り組みが推進されている。当局もこのような取り組みを理解しているものと考えられるが、今回なぜこのような行動を取ったのかは明らかになっていない。