【ITニュース解説】Use ZoomEye to find Jupyter servers without identity verification enabled
2025年09月26日に「Dev.to」が公開したITニュース「Use ZoomEye to find Jupyter servers without identity verification enabled」について初心者にもわかりやすく解説しています。
ITニュース概要
Jupyterサーバーを認証なしで公開すると、インターネット上の誰もがコードや機密情報にアクセスできる危険がある。実際にZoomEyeで多数の未認証サーバーが発見されており、情報漏洩や資産損失のリスクが高い。Jupyter利用時は必ずトークンやパスワード認証を設定し、安易な公開は避けよう。
ITニュース解説
システムエンジニアを目指す皆さんにとって、日々の学習や開発作業で使うツールは非常に重要だ。その中でも、特にデータ分析や機械学習の分野で広く利用されている「Jupyter Notebook」やその次世代版である「JupyterLab」は、多くの人が触れる機会があるだろう。これらはウェブブラウザ上でコードを書いて実行し、その結果や説明を同じページにまとめられる便利なツールで、データサイエンティストを中心に人気を集めている。しかし、その便利さの裏には、使い方を誤ると重大なセキュリティリスクを抱える可能性があるという重要な問題が潜んでいる。
現在、インターネット上には、セキュリティ対策が不十分なまま公開されているJupyterサーバーが数多く存在することが指摘されている。これは、Jupyterを利用する一部のユーザーが、サーバーへのアクセスに必要な「認証機能」を有効にしていないために発生している。認証機能とは、ログイン時にパスワードや特別なコード(トークン)の入力を求めることで、正当なユーザーだけがアクセスできるようにする仕組みのことだ。この認証が設定されていないJupyterサーバーは、インターネットにつながっていれば誰でも自由にアクセスでき、サーバー内に保存されているプログラムコードや機密文書を閲覧できてしまう危険性があるのだ。
この問題を発見するために使われたのが、「ZoomEye」というサイバースペース検索エンジンだ。ZoomEyeは、インターネット上に公開されている世界中のサーバーやデバイスを常時監視し、それらの情報を収集・分析している。特定の条件に合致するサーバーを見つけ出すことができるツールだ。このZoomEyeを使って、「認証なしでアクセスできるJupyterサーバー」を特定する試みが行われた。
Jupyter NotebookやJupyterLabは、通常、コマンドを入力することで起動する。例えば、ローカル環境(自分のパソコン内)で使う場合、専用のコマンドを実行すると、ウェブブラウザでアクセスするためのアドレス(通常はhttp://localhost:8888)と、認証に必要なトークンが表示される。このトークンをブラウザのログイン画面で入力することで、初めてJupyterの機能が使えるようになる。これが本来の、そして推奨されるセキュリティ設定だ。
しかし、一部のユーザーは、インターネット経由でJupyterサーバーにアクセスしたい場合や、ログインの手間を省きたいという理由から、意図的に認証機能を無効にしてしまうことがある。具体的には、Jupyterを起動するコマンドに特定のオプションを追加する。例えば、「--ip="*"」というオプションは、インターネット上のあらゆる場所からアクセスできるように設定するもので、「--NotebookApp.token="" --NotebookApp.password=""」というオプションは、トークンもパスワードも不要にしてしまう設定だ。これらの設定を組み合わせると、インターネットに公開されたJupyterサーバーが、誰もが自由にアクセスできる状態になってしまう。
ZoomEyeを使った調査では、このような認証なしで公開されているJupyterサーバーが、実際に多数見つかった。認証なしのJupyter Notebookサーバーのウェブページは、ブラウザのタイトルバーに「Home Page - Select or create a notebook」と表示される特徴があり、同様に認証なしのJupyterLabサーバーは「JupyterLab」と表示される。これらの特徴を手がかりにZoomEyeで検索したところ、なんとJupyter Notebookサーバーが1362件、JupyterLabサーバーが2071件も発見されたのだ。これは、合計で3000件以上のJupyterサーバーが、無防備な状態でインターネットに公開されていることを意味している。
このような無防備なJupyterサーバーがもたらす危険性は非常に深刻だ。認証機能が設定されていないサーバーは、悪意のある第三者によって簡単にアクセスされてしまう。もしそのサーバー内に機密性の高い情報が含まれていたら、情報漏洩は避けられない。
例えば、あるJupyterサーバーからは、仮想通貨取引所のAPIキーとシークレット、そしてGmailのユーザー名とパスワードが漏洩していることが確認された。APIキーやシークレットは、プログラムから自動的に取引を行うための重要な認証情報であり、これが悪用されれば、他人のアカウントを使って仮想通貨の売買を勝手に行われたり、資産を奪われたりする可能性がある。また、Gmailのユーザー名とパスワードが漏洩すれば、個人のプライベートな情報が詰まったメールボックスが覗き見られたり、アカウントを乗っ取られて他のサービスへの不正ログインに利用されたりする危険性がある。
さらに別の例では、Amazon Web Services(AWS)のアカウントにアクセスするための「ACCESS KEY ID」と「SECRET ACCESS KEY」が漏洩しているJupyterサーバーも発見された。AWSは、多くの企業や個人が利用するクラウドコンピューティングサービスであり、これらの認証情報が悪用されれば、攻撃者はAWSアカウントの完全な権限を奪い、保存されているファイルを削除したり、不正なファイルをアップロードしたり、さらには新たなクラウドサーバーを勝手に立ち上げたりすることが可能になる。これは、金銭的な被害だけでなく、企業のシステム全体に甚大な損害を与えることにつながる、極めて重大なセキュリティインシデントだ。
システムエンジニアを目指す皆さんにとって、この事例はセキュリティ意識の重要性を改めて教えてくれるものだ。便利なツールを使う際には、その利便性と引き換えにどのようなリスクがあるのかを常に考える必要がある。Jupyterを利用する上で、このような危険を避けるための対策はいくつかある。
まず最も基本的なこととして、Jupyterのウェブサービスは、特別な理由がない限りインターネットに公開しない方が安全だ。自分のパソコンや閉鎖されたローカルネットワーク内で使う分には、外部からの不正アクセスを受けるリスクは大幅に低減される。
もし、どうしてもインターネット経由でJupyterにアクセスする必要がある場合は、絶対に認証機能を無効にしてはならない。手間がかかるからといってパスワードやトークンの入力を省略すると、上記の例のように非常に深刻な被害につながる可能性がある。Jupyterの起動時には、必ずパスワードやトークンを設定し、正当なユーザーだけがアクセスできるようにすることが不可欠だ。公式のドキュメントやセキュリティアドバイスを参考に、適切な認証設定を行うべきだ。
今回のニュースは、システムの「設定ミス」がいかに重大な脆弱性につながるかを具体的に示している。システムエンジニアとして、単に機能を実現するだけでなく、そのシステムが安全に運用されるためのセキュリティ対策まで含めて設計・構築する視点が求められる。便利さとセキュリティは常に両立させるべきであり、安易な設定は思わぬ落とし穴になることを心に留めておく必要がある。常に最新のセキュリティ情報を収集し、自分が扱うシステムがどのようなリスクにさらされているのかを理解し、適切な対策を講じることが、これからのシステムエンジニアにとって非常に重要なスキルとなるだろう。