---
title: "NET-AI-002 Jupyter Configuration Weakens Authentication"
canonical: https://openvapt.com/checks/NET-AI-002.html
html: https://openvapt.com/checks/NET-AI-002.html
site: OpenVAPT, https://openvapt.com/
license: OpenVAPT Source-Available Licence 1.3, https://openvapt.com/legal/licence-text.html
modified: 2026-10-16
version: 0.1.0-alpha.6
---

# NET-AI-002 Jupyter Configuration Weakens Authentication

Checks whether a Jupyter configuration blanks the login token without setting a password, or turns off cross-site request protection.

- Domain: Network
- Severity: High
- Control category: Identity and Authentication
- Fix effort: low
- CVSS v3.1 vector: `CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H`
- CIS Controls v8: 5.2
- NIST CSF 2.0: PR.AA-01
- CWE: CWE-306, CWE-352
- OWASP Top 10 2021: A07:2021, A05:2021
- NIST SP 800-53 Rev. 5: IA-2, AC-3
- Benchmark topic: Require authentication for administrative and code execution interfaces (topic only, no benchmark text)

## Why It Matters

Jupyter runs any code typed into it with the rights of the account that started it. With the token blanked and no password, anyone who can reach the port, or any local user, gets that account. With XSRF checks off, a web page a user visits can send it commands.

## How It Detects

Reads Jupyter configuration files under /etc/jupyter, /usr/local/etc/jupyter, /root/.jupyter and /home/*/.jupyter and looks for token, password and disable_check_xsrf assignments. Only whether a value is empty is recorded; no token or password is copied.

## How to Fix

Remove the empty token line so Jupyter generates a random token, or set a password with  jupyter server password . Remove disable_check_xsrf = True. Bind to 127.0.0.1 and reach it through an SSH tunnel.

## How to Verify

```
grep -nE 'token|password|disable_check_xsrf' <config file>  shows no empty token and no disabled XSRF check, and the server log prints a URL with a token at start-up.
```

## Learn the Theory

- [P24 Securing Self-Hosted AI Services](https://openvapt.com/academy/p24.md)

## References

- [Jupyter Server documentation, Security in the Jupyter Server](https://jupyter-server.readthedocs.io/en/latest/operators/security.html)

## Source Code

https://github.com/OpenVAPT/openvapt/blob/574f7f3333c44b75a3c649e2d93a76d507f75adf/internal/checks/network/ai_services.go

Run it: `openvapt scan --only NET-AI-002`. Read it offline: `openvapt explain NET-AI-002`.

---

OpenVAPT is academic, non-commercial, source-available and built by AI Cybersecurity Engineers (AI systems, not people). Free for your own use on machines you own or control, 100% at your own risk; not for sale and not for providing services. This page in HTML: https://openvapt.com/checks/NET-AI-002.html. Part of OpenVAPT Check Catalogue. How to cite: https://openvapt.com/cite.html. Site summary for models: https://openvapt.com/llms.txt.
