Deutsche BahnのLinuxロックアウト:ボット検知が失敗したとき

Linuxオペレーティングシステムを使用しているユーザーにとって、Deutsche Bahn(DB)で列車のチケットを予約することは、最近ではフラストレーションの原因となっています。硬直した自動化セキュリティの落とし穴を浮き彫りにするこの動きで、ドイツ鉄道会社のウェブサイトは、ブラウザがLinux上で動作していると識別するユーザーの接続検索および予約ツールへのアクセスをブロックし始めました。

この問題は技術コミュニティ内で大きな議論を呼び、単純なボット検知メカニズムが意図せず正当なユーザー層を疎外してしまう様子を示しています。

「ボット」エラー:エラーコード 751

Redditなどのプラットフォームのユーザーやheise onlineの編集チームからの報告によると、Linuxユーザーは接続検索を試みた際に特定のエラーメッセージに直面しています。エラーページにはError Code 751が表示され、以下のプレーンテキスト警告が添えられています:

申し訳ありません。このプロセス中にエラーが発生しました。お使いのブラウザの挙動はボットに似ています。

興味深いことに、このロックアウトはサイト全体に共通するものではありません。ホームページ(bahn.de)は引き続きアクセス可能ですが、エラーはユーザーが接続検索のリクエストを開始した瞬間に発生することが多いです。エラーがすぐに表示されるユーザーもいれば、数回の試行後に初めて遭遇するユーザーもいます。

根本原因:User-Agentフィルタリング

技術的な分析によると、ブロックはIPアドレスや複雑な行動分析に基づくものではなく、ブラウザのUser-Agent(UA)文字列の単純なチェックに基づいています。User-Agentは、ブラウザがオペレーティングシステムとブラウザバージョンを識別するためにサーバーへ送信する情報です。

heise onlineが実施したテストでは、ブロックはUA文字列に「Linux」という単語が含まれていることに特に結びついていることが確認されました。結果は異なるブラウザ間でも一貫していました:

  • Firefox on Windows 11: User-Agentを手動で「Linux」を含むように変更すると、ウェブサイトはボットエラーを発生させます。
  • Chrome on Linux: 主流のブラウザであるにもかかわらず、UA文字列がOSをLinuxと識別すると、Chromeユーザーはブロックされます。
  • Safari on macOS: macOSでもLinuxのUser-Agentを偽装することでブロックを引き起こすことができます。

本質的に、サーバーが識別子に「Linux」を検出すると、実際のブラウザや挙動に関係なく、リクエストがボットからのものとみなします。

影響を受けたユーザー向けの回避策

現在チケット予約ができないユーザーに対する解決策は、User-Agentを「偽装」してブラウザがWindows上で動作しているように見せることです。

Firefoxでは、以下の手順で実現できます:

  1. アドレスバーに about:config と入力し、リスクを受け入れます。
  2. general.useragent.override を検索します。
  3. WindowsベースのUser-Agent識別子で新しい文字列エントリを作成します。

識別子を「Linux」から「Windows」に変更すれば、予約システムへのアクセスは即座に復元されます。

分析:「Vibe Coding」セキュリティの危険性

Deutsche Bahnはまだこの挙動について公式な説明を出していませんが、コミュニティはこのような粗雑なセキュリティ手段がどのように実装されたのかを推測しています。Hacker Newsのコメント投稿者の一人は、これが「vibe coding」の結果かもしれないと指摘しました――深いアーキテクチャ的監視なしにLLMを用いてセキュリティパッチを生成する手法です。

誰かがセキュリティ向上を試みてvibe codingを行い、LLMがUser-Agent文字列を上位10のエージェントに限定することを推奨しました。結果としてLinuxが排除されたのです。

LLMの提案によるものでも、レガシーなセキュリティルールによるものでも、結果は同じです:技術者層のかなりの割合がLinuxを使用していることを認識できていないことです。OS全体を「ボット的挙動」の代理とみなすことで、DBは実際の保護効果がほとんどない(実際のボットは簡単にUser-Agentを偽装できる)セキュリティ対策を作り出し、正規の顧客のユーザー体験を積極的に損なっています。

この事例は、セキュリティはクライアントが提供する表面的な識別子ではなく、行動と意図に基づくべきだという教訓を示しています。

Sources