Skip to content

Bug: Jupyter and Jupyter-Notebook LISTEN too widely #585

@bjornrobertsson

Description

@bjornrobertsson

Bug/Security improvement: Jupyter modules bind to all interfaces unnecessarily

The two Registry modules for Jupyter Notebook and Jupyter Lab explicitly bind to all network interfaces (--ServerApp.ip='*'):

Combined with disabled authentication (--ServerApp.token='' --ServerApp.password=''), this exposes an unauthenticated Jupyter server to the entire network. In Kubernetes environments, any pod on the same network can connect directly, bypassing Coder's authentication layer.

Why this is unnecessary

Coder's port forwarding works through the agent locally, so Jupyter only needs to bind to localhost. The default Jupyter behavior (without --ServerApp.ip) already binds to localhost on both IPv4 and IPv6:

tcp6       0      0  ::1.8888               *.*                    LISTEN
tcp4       0      0  127.0.0.1.8888         *.*                    LISTEN

Proposed fix

  1. Remove --ServerApp.ip='*' entirely (secure by default)
  2. Add an optional host variable defaulting to localhost or 127.0.0.1 for users who explicitly need different behavior

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions