{"answers":{"affected":"3 open source packages ship an affected version, including sqladmin.","exploited":"There is no known exploitation of CVE-2026-46645 in the wild and no public exploit code.","fix":"Upgrade sqladmin to 0.25.1 or later.","what":"CVE-2026-46645 is a medium-severity missing authorization vulnerability in smithyhq sqladmin, published on 10 Jun 2026. Any signed-in user can exploit it over the network, with no action from the victim."},"fix_prompt":"Check this codebase for CVE-2026-46645 and fix it if it is affected.\n\nWhat it is: CVE-2026-46645 is a medium-severity missing authorization vulnerability in smithyhq sqladmin, published on 10 Jun 2026. Any signed-in user can exploit it over the network, with no action from the victim.\nExploitation: There is no known exploitation of CVE-2026-46645 in the wild and no public exploit code.\n\nAffected packages and fixed versions:\n- sqladmin (PyPI): affected all versions; fixed in 0.25.1\n- sqladmin (PyPI): affected all versions; fixed in 0.25.1\n- sqladmin (PyPI): affected all versions; fixed in 0.25.1\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2026-46645/ (Markdown: https://insights.sbomify.com/CVE-2026-46645/index.md)","id":"CVE-2026-46645","markdown":"https://insights.sbomify.com/CVE-2026-46645/index.md","name":"CVE-2026-46645","record":{"aliases":["GHSA-54mc-gghv-4cfj","PYSEC-2026-3073"],"analysis":{"component_type":"library","fix_type":"upgrade","impacts":["data_read"],"network_reachable":"yes","non_default_config":false,"product_category":"SQLAlchemy admin library","requires_auth":"low_privilege","summary":"Authenticated users can bypass access restrictions to read model data via the ajax_lookup endpoint in SQLAdmin.","user_interaction":"not_required","vuln_class":"missing_authorization"},"analysis_generated_by":"qwen3.8-flash-next","assigner":"GitHub_M","cpe":[],"cvss":{"score":4.3,"severity":"medium","source":"cna","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","version":"3.1"},"cwes":[{"id":"CWE-862","name":"Missing Authorization"}],"description":"SQLAdmin is a flexible Admin interface for SQLAlchemy models. Prior to version 0.25.1, the ajax_lookup endpoint in application.py bypasses the is_accessible() access control check that all other endpoints enforce. If a developer restricts model access by overriding is_accessible(), an authenticated user can still query that model's data through the ajax_lookup endpoint — silently bypassing the restriction. This issue has been patched in version 0.25.1.","ecosystems":["PyPI"],"exploits":{"exploitdb":0,"first_seen":"2026-06-12","github_poc":1,"max_poc_stars":0,"metasploit":0,"nuclei":0,"refs":[{"date":"2026-06-12T03:23:09Z","kind":"github_poc","ref":"https://github.com/rootdirective-sec/CVE-2026-46645-Analysis-Lab","stars":0,"title":null}],"tier":"poc_unverified"},"has_fix":true,"headline":"SQLAdmin: Authorization Bypass on `ajax_lookup`","id":"CVE-2026-46645","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":"PyPI","product":null,"products":[],"type":"missing_authorization","year":"2026"},"n_packages":3,"n_references":4,"next":{"headline":"Joplin: SSO Auth Code Login Missing Rate Limiting — 9-Digit Numeric Code Brute-Forceable via Unprotected Endpoint","id":"CVE-2026-46649"},"packages":[{"ecosystem":"PyPI","fixed":["0.25.1"],"introduced":["0"],"last_affected":[],"package":"sqladmin","purl":null,"source":"GHSA-54mc-gghv-4cfj"},{"ecosystem":"PyPI","fixed":["0.25.1"],"introduced":["0"],"last_affected":[],"package":"sqladmin","purl":"pkg:pypi/sqladmin","source":"GHSA-54mc-gghv-4cfj"},{"ecosystem":"PyPI","fixed":["0.25.1"],"introduced":["0"],"last_affected":[],"package":"sqladmin","purl":"pkg:pypi/sqladmin","source":"PYSEC-2026-3073"}],"prev":{"headline":"symfony/polyfill-intl-idn accepts xn-- labels whose Punycode payload decodes to ASCII-only: insecure equivalence","id":"CVE-2026-46644"},"products":["sqladmin"],"published":"2026-06-10","related":[],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"CC BY 4.0","name":"GitHub Advisory Database","prefix":"GHSA"},{"class":"attribution","licence":"CC BY 4.0","name":"PyPA Advisory Database","prefix":"PYSEC"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"},{"class":"open","licence":"CC0","name":"PoC-in-GitHub"}],"ssvc":{"automatable":"no","exploitation":"none","technical_impact":"partial"},"state":"PUBLISHED","updated":"2026-06-11","vendors":["smithyhq"]},"summary":"Authenticated users can bypass access restrictions to read model data via the ajax_lookup endpoint in SQLAdmin.","url":"https://insights.sbomify.com/CVE-2026-46645/"}