gitsafehub
github.com/udacity/cd14712-exercises ↗

udacity/cd14712-exercises

scanned 2026-08-15 · git 59f5e7e
3 of 6 checks flagged a security issue
🔴 Needs attention
Only 5 of 6 checks finished — treat this as provisional. Re-check ↻

Informational scan, not a security audit. How this is computed.

Leaked secrets10Vulnerable dependencies47Known OSS vulnerabilities88Risky code patternsMalicious dependenciesProject health

Security checks

Leaked secrets — Gitleaks 10 found · 2 serious

API keys, passwords or tokens committed into the repo.

  • Serious jwt Uncovered a JSON Web Token, which may lead to unauthorized access to web applications and sensitive user data.
    python-sdk-main/tests/client/auth/extensions/test_client_credentials.py:88
    A credential (key, password or token) appears in your code. Fix: Remove it, rotate the key, and load it from an environment variable instead.
  • Serious jwt Uncovered a JSON Web Token, which may lead to unauthorized access to web applications and sensitive user data.
    python-sdk-main/tests/client/auth/extensions/test_client_credentials.py:103
    A credential (key, password or token) appears in your code. Fix: Remove it, rotate the key, and load it from an environment variable instead.
  • Worth fixing generic-api-key Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
    python-sdk-main/examples/clients/simple-chatbot/mcp_simple_chatbot/.env.example:1
    A credential (key, password or token) appears in your code. Fix: Remove it, rotate the key, and load it from an environment variable instead.
  • Worth fixing generic-api-key Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
    python-sdk-main/examples/clients/simple-chatbot/test_vocareum.py:7
    A credential (key, password or token) appears in your code. Fix: Remove it, rotate the key, and load it from an environment variable instead.
  • Worth fixing generic-api-key Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
    python-sdk-main/examples/clients/simple-chatbot/mcp_simple_chatbot/main.py:19
    A credential (key, password or token) appears in your code. Fix: Remove it, rotate the key, and load it from an environment variable instead.
  • Worth fixing generic-api-key Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
    python-sdk-main/examples/clients/simple-chatbot/INSTRUCTOR_NOTES.md:23
    A credential (key, password or token) appears in your code. Fix: Remove it, rotate the key, and load it from an environment variable instead.
  • Worth fixing generic-api-key Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
    python-sdk-main/examples/clients/simple-chatbot/INSTRUCTOR_NOTES.md:117
    A credential (key, password or token) appears in your code. Fix: Remove it, rotate the key, and load it from an environment variable instead.
  • Worth fixing generic-api-key Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
    python-sdk-main/examples/clients/simple-chatbot/VOCAREUM_SETUP_GUIDE.md:38
    A credential (key, password or token) appears in your code. Fix: Remove it, rotate the key, and load it from an environment variable instead.
  • Worth fixing generic-api-key Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
    lesson-8-mcp-agent/exercises/starter/mcp_agent_starter.py:37
    A credential (key, password or token) appears in your code. Fix: Remove it, rotate the key, and load it from an environment variable instead.
  • Worth fixing generic-api-key Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
    lesson-8-mcp-agent/exercises/solution/mcp_agent_solution.py:36
    A credential (key, password or token) appears in your code. Fix: Remove it, rotate the key, and load it from an environment variable instead.

via Gitleaks v8.21.2 · MIT

Vulnerable dependencies — Trivy 47 found

Packages you depend on that have known security holes (CVEs).

  • Worth fixing CVE-2026-45409 python-idna: idna: Denial of Service via specially crafted long inputs
    Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-45409). Fix: Update that package to its patched version.
  • Worth fixing CVE-2025-66416 mcp: DNS Rebinding Protection Disabled by Default in Model Context Protocol Python SDK
    Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2025-66416). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-52869 MCP Python SDK: HTTP transports serve session requests without verifying the authenticated principal
    Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-52869). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-59950 MCP Python SDK: WebSocket server transport does not support Host/Origin validation
    Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-59950). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-28684 python-dotenv: python-dotenv: Arbitrary file overwrite via symbolic link following
    Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-28684). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-24486 python-multipart: Python-Multipart: Arbitrary file write via path traversal vulnerability
    Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-24486). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-42561 python-multipart: python-multipart: Denial of Service via excessive multipart part headers
    Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-42561). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-53539 python-multipart: Python-Multipart: Denial of Service via crafted form-urlencoded bodies
    Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-53539). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-40347 python-multipart: Python-Multipart: Denial of Service via crafted multipart/form-data requests
    Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-40347). Fix: Update that package to its patched version.
  • Worth fixing CVE-2025-62727 starlette: Starlette DoS via Range header merging
    Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2025-62727). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-48818 starlette: Starlette: SSRF and NTLM credential theft via UNC paths in StaticFiles on Windows
    Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-48818). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-54283 starlette: Starlette: request.form() limits silently ignored for application/x-www-form-urlencoded enable DoS
    Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-54283). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-48710 starlette: Starlette: Security restriction bypass via malformed HTTP Host header
    Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-48710). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-48817 starlette: Starlette: Information disclosure and unintended method execution via non-standard HTTP methods
    Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-48817). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-26007 cryptography: cryptography Subgroup Attack Due to Missing Subgroup Validation for SECT Curves
    python-sdk-main/uv.lock
    A package you depend on has a known security hole (CVE-2026-26007). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-69247 cryptography is a package designed to expose cryptographic primitives ...
    python-sdk-main/uv.lock
    A package you depend on has a known security hole (CVE-2026-69247). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-69249 python-cryptography is a package designed to expose cryptographic prim ...
    python-sdk-main/uv.lock
    A package you depend on has a known security hole (CVE-2026-69249). Fix: Update that package to its patched version.
  • Worth fixing GHSA-537c-gmf6-5ccf Vulnerable OpenSSL included in cryptography wheels
    python-sdk-main/uv.lock
    A package you depend on has a known security hole (GHSA-537c-gmf6-5ccf). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-39892 cryptography: Cryptography: Buffer overflow via non-contiguous buffer in API
    python-sdk-main/uv.lock
    A package you depend on has a known security hole (CVE-2026-39892). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-69248 cryptography is a package designed to expose cryptographic primitives ...
    python-sdk-main/uv.lock
    A package you depend on has a known security hole (CVE-2026-69248). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-45409 python-idna: idna: Denial of Service via specially crafted long inputs
    python-sdk-main/uv.lock
    A package you depend on has a known security hole (CVE-2026-45409). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-32597 pyjwt: PyJWT accepts unknown `crit` header extensions (RFC 7515 §4.1.11 MUST violation)
    python-sdk-main/uv.lock
    A package you depend on has a known security hole (CVE-2026-32597). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-48526 python-pyjwt: PyJWT: Authentication bypass due to forged JSON Web Tokens
    python-sdk-main/uv.lock
    A package you depend on has a known security hole (CVE-2026-48526). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-48522 python-pyjwt: PyJWT: Server-Side Request Forgery (SSRF) via uncontrolled URL fetching in PyJWKClient
    python-sdk-main/uv.lock
    A package you depend on has a known security hole (CVE-2026-48522). Fix: Update that package to its patched version.
  • Worth fixing CVE-2026-48523 python-pyjwt: PyJWT: Verifier-side algorithm bypass leads to unauthorized information access
    python-sdk-main/uv.lock
    A package you depend on has a known security hole (CVE-2026-48523). Fix: Update that package to its patched version.
… 22 more not shown

via Trivy v0.70.0 · Apache-2.0

Known OSS vulnerabilities — OSV-Scanner 88 found · 2 serious

Your dependencies cross-checked against the OSV vulnerability database.

  • Serious PYSEC-2026-2120 Black is the uncompromising Python code formatter. Black provides a GitHub action for formatting code. This action supports an option, use_pyproject: true, for reading the version of Black to use from
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/python-sdk-main/uv.lock
    A package you depend on has a known security hole (CVE-2026-31900). Fix: Update that package to its patched version.
  • Serious PYSEC-2026-36 cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. From 45.0.0 to before 46.0.7, if a non-contiguous buffer was passed to APIs which accepted Pytho
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/python-sdk-main/uv.lock
    A package you depend on has a known security hole (CVE-2026-39892). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-2132 Pallets Click, versions 8.3.2 and below, contain a command injection vulnerability in the click.edit() function, allowing attackers to pass arbitrary OS commands from an unprivileged account.
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-7246). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-215 Internationalized Domain Names in Applications (IDNA) for Python provides support for Internationalized Domain Names in Applications (IDNA) and Unicode IDNA Compatibility Processing. In versions prior
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-45409). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-1617 Model Context Protocol (MCP) Python SDK does not enable DNS rebinding protection by default
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2025-66416). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-3482 MCP Python SDK: HTTP transports serve session requests without verifying the authenticated principal
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-52869). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-3483 MCP Python SDK: WebSocket server transport does not support Host/Origin validation
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-59950). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-2270 python-dotenv reads key-value pairs from a .env file and can set them as environment variables. Prior to version 1.2.2, `set_key()` and `unset_key()` in python-dotenv follow symbolic links when rewrit
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-28684). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-1852 Python-Multipart has Arbitrary File Write via Non-Default Configuration
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-24486). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-3036 python-multipart: Quadratic-time querystring parsing with semicolon separators causes CPU denial of service
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-53539). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-3038 python-multipart affected by Denial of Service via large multipart preamble or epilogue data
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-40347). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-3039 python-multipart has Denial of Service via unbounded multipart part headers
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-42561). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-161 BadHost: Missing Host header validation poisons request.url.path, bypassing path-based security checks
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-48710). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-1942 Starlette vulnerable to O(n^2) DoS via Range header merging in ``starlette.responses.FileResponse``
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2025-62727). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-2280 Starlette is a lightweight ASGI framework/toolkit. In versions 1.0.1 and below, when dispatching a request, HTTPEndpoint selects the handler by lowercasing the HTTP method and looking it up as an attr
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-48817). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-2281 Starlette is a lightweight ASGI framework/toolkit. In versions 1.0.1 and earlier, StaticFiles on Windows is vulnerable to SSRF. An UNC path such as \\attacker.com\share can cause os.path.realpath to i
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-48818). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-248 Starlette is a lightweight ASGI framework/toolkit. Prior to 1.3.0, the HTTP request path is not validated before being used to reconstruct request.url. Because request.url is rebuilt by concatenating
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-54282). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-249 Starlette is a lightweight ASGI framework/toolkit. From 0.4.1 until 1.3.1, request.form() accepts max_fields and max_part_size to bound resource consumption while parsing form data. These limits are e
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/Exercises-Calculator-Server/exercises/exercise_3a/solution/calculator-mcp/uv.lock
    A package you depend on has a known security hole (CVE-2026-54283). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-1851 Denial of service (DoS) via deformation `multipart/form-data` boundary
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/python-sdk-main/examples/clients/simple-chatbot/mcp_simple_chatbot/requirements.txt
    A package you depend on has a known security hole (CVE-2024-53981). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-1852 Python-Multipart has Arbitrary File Write via Non-Default Configuration
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/python-sdk-main/examples/clients/simple-chatbot/mcp_simple_chatbot/requirements.txt
    A package you depend on has a known security hole (CVE-2026-24486). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-3036 python-multipart: Quadratic-time querystring parsing with semicolon separators causes CPU denial of service
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/python-sdk-main/examples/clients/simple-chatbot/mcp_simple_chatbot/requirements.txt
    A package you depend on has a known security hole (CVE-2026-53539). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-3038 python-multipart affected by Denial of Service via large multipart preamble or epilogue data
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/python-sdk-main/examples/clients/simple-chatbot/mcp_simple_chatbot/requirements.txt
    A package you depend on has a known security hole (CVE-2026-40347). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-3039 python-multipart has Denial of Service via unbounded multipart part headers
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/python-sdk-main/examples/clients/simple-chatbot/mcp_simple_chatbot/requirements.txt
    A package you depend on has a known security hole (CVE-2026-42561). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-2121 Black is the uncompromising Python code formatter. Prior to 26.3.1, Black writes a cache file, the name of which is computed from various formatting options. The value of the --python-cell-magics opti
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/python-sdk-main/uv.lock
    A package you depend on has a known security hole (CVE-2026-32274). Fix: Update that package to its patched version.
  • Worth fixing PYSEC-2026-2122 CairoSVG is an SVG converter based on Cairo, a 2D graphics library. Prior to Kozea/CairoSVG has exponential denial of service via recursive <use> element amplification in cairosvg/defs.py. This causes
    /workdirs/scan-e8975a54-0051-4495-a644-be417e2fa5b4/python-sdk-main/uv.lock
    A package you depend on has a known security hole (CVE-2026-31899). Fix: Update that package to its patched version.
… 63 more not shown

via OSV-Scanner v1.9.2 · Apache-2.0

Risky code patterns — Semgrep none found ✓

Code that can be exploited: injection, hardcoded credentials and similar.

Nothing found by this check. ✓

via Semgrep v1.147.0 · LGPL-2.1

Malicious dependencies — Guarddog none found ✓

Packages that look intentionally malicious: typosquats, sneaky install scripts.

Nothing found by this check. ✓

via Guarddog v2.10.0 · Apache-2.0

Project health

A signal about how the project is maintained — not a vulnerability in your code. It doesn’t affect the verdict above.

Project health — OpenSSF Scorecard didn’t run

Maintenance & supply-chain hygiene. A signal about the project, not a vulnerability in your code.

This check didn’t finish — that’s not the same as “clean.” Try Check again above.

via OpenSSF Scorecard · Apache-2.0

About these results. Six open-source checks ran in parallel; every finding is tagged with the tool that produced it. The verdict follows a published rule. False positives and false negatives are normal — a clean scan does not mean the code is secure, and a red verdict does not mean the project is compromised.