Public scan — anyone with this URL can view this analysis. Sign up to track your own repos privately, run scheduled re-scans, and get AI fix prompts via your dashboard.
262 of your 522 findings came from Repobility's proprietary detections. ✓ Repobility tags below mark them.
Upstream (GitHub) caused delay on this scan — not Repobility.
  • GitHub API rate-limited (HTTP 403) — preflight skipped, fell back to direct git clone.
  • Clone from GitHub took 427.06s for a 833.3 MB repo slow.
  • Repobility's analysis ran in 75.7s after the clone landed.

yugabyte/yugabyte-db

https://github.com/yugabyte/yugabyte-db · scanned 2026-06-05 22:30 UTC (4 days, 3 hours ago) · 10 languages

487 findings 11/13 scanners ran 55th percentile · Java · huge (>500K LoC)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

149 actionable findings from 1 signal source. 338 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.

Score breakdown â 2026-05-18-v5
Component Sub-score Weight Contribution
structure_score 65.0 0.15 9.75
security_score 100.0 0.25 25.00
testing_score 81.0 0.20 16.20
documentation_score 68.0 0.15 10.20
practices_score 83.0 0.15 12.45
code_quality 51.0 0.10 5.10
Overall 1.00 78.7
security_score may be inflated — optional security scanners were skipped on this fast scan
Severity distribution — click a segment to filter
Active filters: excluding tests × Reset all

Showing 85 of 149 actionable findings. 487 raw detector signals were grouped into reader-sized issues. Click TP / FP to vote on a finding's accuracy — votes adjust the confidence weighting and improve detection across the platform.

high Security checks quality Quality conf 1.00 ✓ Repobility [MINED107] Missing import: `io` used but not imported: The file uses `io.something(...)` but never imports `io`. This raises NameError at runtime the first time the line executes.
Add `import io` at the top of the file.
src/lint/cpplint.py:5677
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED107] Missing import: `platform` used but not imported: The file uses `platform.something(...)` but never imports `platform`. This raises NameError at runtime the first time the line executes.
Add `import platform` at the top of the file.
managed/node-agent/yb_release.py:95
critical Security checks software dependencies conf 0.90 ✓ Repobility [MINED125] GHA script injection via github.event.pull_request.body in run-step: Multi-line `run: |` block interpolates ${{ github.event.pull_request.body }} into shell. PR title/body/branch/comment fields are attacker-controllable.
Capture the field into an env var first; reference $ENV_VAR in shell.
.github/workflows/pr-title.yml:66
critical Security checks software dependencies conf 0.90 ✓ Repobility 4 occurrences [MINED125] GHA script injection via github.event.pull_request.title in run-step: Multi-line `run: |` block interpolates ${{ github.event.pull_request.title }} into shell. PR title/body/branch/comment fields are attacker-controllable.
Capture the field into an env var first; reference $ENV_VAR in shell.
lines 23, 39, 45, 65
.github/workflows/pr-title.yml:23, 39, 45, 65 (4 hits)
critical Security checks software dependencies conf 0.90 ✓ Repobility 5 occurrences [MINED125] GHA script injection via github.head_ref in run-step: `run:` step interpolates ${{ github.head_ref }} directly into shell. PR title/body/branch/comment fields are attacker-controllable.
Capture the field into an env var first; reference $ENV_VAR in shell.
5 files, 5 locations
src/postgres/third-party-extensions/pg_stat_monitor/.github/workflows/postgresql-11-pmm.yaml:18
src/postgres/third-party-extensions/pg_stat_monitor/.github/workflows/postgresql-12-pmm.yaml:18
src/postgres/third-party-extensions/pg_stat_monitor/.github/workflows/postgresql-13-pmm.yaml:18
src/postgres/third-party-extensions/pg_stat_monitor/.github/workflows/postgresql-14-pmm.yaml:18
src/postgres/third-party-extensions/pg_stat_monitor/.github/workflows/postgresql-15-pmm.yaml:18
critical Security checks software dependencies conf 0.90 ✓ Repobility [MINED125] GHA script injection via github.head_ref in run-step: Multi-line `run: |` block interpolates ${{ github.head_ref }} into shell. PR title/body/branch/comment fields are attacker-controllable.
Capture the field into an env var first; reference $ENV_VAR in shell.
src/postgres/third-party-extensions/pg_duckdb/.github/workflows/docker.yaml:52
critical Security checks cicd CI/CD security conf 0.96 Compose service contains a literal secret environment value
Rotate the value if real. Move it to Docker Compose secrets, a platform secret manager, or an uncommitted environment file.
src/postgres/third-party-extensions/mage/drivers/docker-compose.yml:2 CI/CD securitycontainers
critical Security checks cicd CI/CD security conf 0.96 Compose service contains a literal secret environment value
Rotate the value if real. Move it to Docker Compose secrets, a platform secret manager, or an uncommitted environment file.
managed/docker-compose.yml:42 CI/CD securitycontainers
low Security checks cicd CI/CD security conf 0.35 ✓ Repobility 3 occurrences Workflow references repository secrets in a pull_request workflow
Fork pull_request runs do not receive normal repository secrets on GitHub Actions. Review this as a reliability/intent signal, not as direct fork-secret exfiltration. Raise severity only for pull_request_target or another trusted-context path that runs untrusted PR code with secrets.
2 files, 3 locations
src/postgres/third-party-extensions/pg_duckdb/.github/workflows/docker.yaml:40, 113 (2 hits)
src/postgres/third-party-extensions/pg_parquet/.github/workflows/ci.yml:188
CI/CD securityworkflow secretsGitHub Actions
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED002] Dart Null Bang: value! throws on null. Use ?. or null check.
Review and fix per the pattern semantics. See CWE-476 / for context.
managed/project/UIRunHook.scala:34
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED036] Python Os System Call: os.system() invokes shell with no escaping.
Review and fix per the pattern semantics. See CWE-78 / for context.
managed/devops/opscli/ybops/scripts/generateMetadataFiles.py:96
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED040] Python Yaml Load Unsafe: yaml.load(stream) without SafeLoader can deserialize arbitrary classes.
Review and fix per the pattern semantics. See CWE-502 / for context.
build-support/stabilize_auto_flags_list.py:54
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_bulk_load_tool: Test function `test_bulk_load_tool` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
python/yugabyte/dependency_graph.py:581
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_call_home: Test function `test_call_home` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
python/yugabyte/dependency_graph.py:564
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_catalog_manager: Test function `test_catalog_manager` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
python/yugabyte/dependency_graph.py:575
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_file_readable: Test function `test_file_readable` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
managed/devops/opscli/ybops/cloud/onprem/method.py:281
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_flex_bison: Test function `test_flex_bison` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
python/yugabyte/dependency_graph.py:590
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_master_main: Test function `test_master_main` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
python/yugabyte/dependency_graph.py:538
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_proto_deps_validity: Test function `test_proto_deps_validity` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
python/yugabyte/dependency_graph.py:598
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_tablet_server_main: Test function `test_tablet_server_main` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
python/yugabyte/dependency_graph.py:546
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_yb_admin: Test function `test_yb_admin` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
python/yugabyte/dependency_graph.py:557
high Security checks quality Quality conf 1.00 ✓ Repobility 25 occurrences [MINED108] `self.parse_heap_file` used but never assigned in __init__: Method `invoke_heap_profile_handler` of class `YBProf` reads `self.parse_heap_file`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
Initialize `self.parse_heap_file = <default>` in __init__, or add a class-level default.
2 files, 25 locations
bin/ybcontrol.py:138, 144, 150, 212, 232, 237, 240, 247, +7 more (17 hits)
bin/yb-prof.py:80, 92, 97, 190, 197, 198, 199, 200 (8 hits)
high Security checks software dependencies conf 0.90 ✓ Repobility 25 occurrences [MINED118] Dockerfile FROM `yugabyteci/yb_build_infra_almalinux9_x86_64:latest` not pinned by digest: `FROM yugabyteci/yb_build_infra_almalinux9_x86_64:latest` resolves the tag at build time. The registry CAN re-push a different image for the same tag, so every build is potentially different. Production images should pin to `image@sha256:...` for reproducibility + supply-chain integrity.
Replace with: `FROM yugabyteci/yb_build_infra_almalinux9_x86_64:latest@sha256:<digest>`. Get the digest from `docker manifest inspect`. Re-pin via a scheduled bot (Renovate, Dependabot).
12 files, 17 locations
src/odyssey/docker/Dockerfile:1, 13 (2 hits)
src/postgres/third-party-extensions/mage/docker/Dockerfile:20, 37 (2 hits)
troubleshoot/backend/docker/Dockerfile:1, 10 (2 hits)
yugabyted-ui/apiserver/cmd/server/Dockerfile:1, 7 (2 hits)
yugabyted-ui/apiserver/conf/templates/go-echo-server/Dockerfile.mustache:1, 7 (2 hits)
.claude/Dockerfile:1
.cursor/Dockerfile:1
.devcontainer/Dockerfile:1
high Security checks software dependencies conf 0.90 ✓ Repobility [MINED126] Workflow container/services image `pgxn/pgxn-tools` unpinned: `container/services image: pgxn/pgxn-tools` without `@sha256:...` pulls a mutable tag at workflow-run time. Treat workflow container references with the same supply-chain discipline as Dockerfile FROM lines.
Replace with `pgxn/pgxn-tools@sha256:<digest>`. Re-pin via Dependabot Docker scope.
src/postgres/third-party-extensions/pgtap/.github/workflows/release.yml:9
high Security checks software dependencies conf 0.90 ✓ Repobility [MINED131] pre-commit hook `https://github.com/pre-commit/pre-commit-hooks` pinned to mutable rev `v4.5.0`: `.pre-commit-config.yaml` references `https://github.com/pre-commit/pre-commit-hooks` at `rev: v4.5.0`. If `{rev}` is a branch or version tag, the repo owner can push new code there and `pre-commit install --install-hooks` will fetch it on every developer's machine.
Pin to a commit SHA: `rev: <40-char-sha>` and bump it through `pre-commit autoupdate` (which writes to PRs that are reviewed).
src/postgres/third-party-extensions/postgresql_anonymizer/.pre-commit-config.yaml:3
high Security checks software dependencies conf 0.90 ✓ Repobility [MINED134] Binary file `managed/byoc-api-proxy/gradle/wrapper/gradle-wrapper.jar` committed in source repo: `managed/byoc-api-proxy/gradle/wrapper/gradle-wrapper.jar` is a .jar binary (46,175 bytes) committed to a repo that otherwise has 12226 source files. Trojan binaries inside otherwise-normal source repos are a known supply-chain attack: a compromised dependency or PR slips in a binary that gets executed by build scripts.
Audit the binary's provenance. If it's vendored library code, document it in a VENDORED.md. If it's a build artifact, add the extension to .gitignore and rebuild from source.
managed/byoc-api-proxy/gradle/wrapper/gradle-wrapper.jar:1
high Security checks software dependencies conf 0.90 ✓ Repobility [MINED134] Binary file `managed/lint/google-java-format-1.17.0-all-deps.jar` committed in source repo: `managed/lint/google-java-format-1.17.0-all-deps.jar` is a .jar binary (3,511,287 bytes) committed to a repo that otherwise has 12226 source files. Trojan binaries inside otherwise-normal source repos are a known supply-chain attack: a compromised dependency or PR slips in a binary that gets executed by build scripts.
Audit the binary's provenance. If it's vendored library code, document it in a VENDORED.md. If it's a build artifact, add the extension to .gitignore and rebuild from source.
managed/lint/google-java-format-1.17.0-all-deps.jar:1
high Security checks software dependencies conf 0.90 ✓ Repobility [MINED134] Binary file `troubleshoot/backend/gradle/wrapper/gradle-wrapper.jar` committed in source repo: `troubleshoot/backend/gradle/wrapper/gradle-wrapper.jar` is a .jar binary (63,721 bytes) committed to a repo that otherwise has 12226 source files. Trojan binaries inside otherwise-normal source repos are a known supply-chain attack: a compromised dependency or PR slips in a binary that gets executed by build scripts.
Audit the binary's provenance. If it's vendored library code, document it in a VENDORED.md. If it's a build artifact, add the extension to .gitignore and rebuild from source.
troubleshoot/backend/gradle/wrapper/gradle-wrapper.jar:1
high Security checks quality Quality conf 1.00 [SEC080] Python: tarfile.extractall without filter: tarfile.extract*() without filter='data' allows path-traversal (CVE-2007-4559, fixed via PEP 706 in 3.12). Ported from bandit B202 (Apache-2.0).
Add `filter='data'` (Python ≥ 3.12) or manually validate member paths against `os.path.abspath`.
managed/node-agent/yb_release.py:112
high Security checks quality Quality conf 1.00 [SEC088] Go: TLS InsecureSkipVerify=true: tls.Config{InsecureSkipVerify:true} disables certificate verification — MITM risk. Ported from gosec G402 (Apache-2.0).
Remove the option. If self-signed certs are required, pin via RootCAs.
managed/node-agent/ynp/yba/request.go:45
low Security checks security Injection conf 1.00 [SEC103] LDAP injection — non-constant search filter: User input concatenated into an LDAP search filter. Attackers inject `*)(uid=*` style payloads to bypass auth or enumerate accounts.
Escape with javax.naming.ldap.Rdn.escapeValue or equivalent. For python-ldap, use ldap.filter.escape_filter_chars. Better: use parameterized search APIs (Spring LdapTemplate filter encoders).
arcanist_util/check-diff-name.py:69
high Security checks cicd CI/CD security conf 0.90 5 occurrences Compose service uses host networking
Use the default bridge network and explicit ports, or document and isolate the exceptional host requirement.
lines 1, 26, 41, 53, 66
src/postgres/third-party-extensions/pg_parquet/.devcontainer/docker-compose.yml:1, 26, 41, 53, 66 (5 hits)
CI/CD securitycontainers
high Security checks security auth conf 0.78 Consent is collected in UI without visible backend audit persistence
Persist consent as a backend record with subject, actor, purpose, scope, legal text version, timestamp, IP address, user agent, and revocation state.
managed/ui/src/redesign/features/rbac/common/RbacApiPermValidator.tsx:79
high Security checks cicd CI/CD security conf 0.90 Database service has no persistent data volume
Mount the database data directory to a named Docker volume or managed persistent disk, and document backup and restore testing.
src/postgres/third-party-extensions/postgresql_anonymizer/docker/docker-compose.yml:4 CI/CD securitycontainers
high Security checks cicd CI/CD security conf 0.84 3 occurrences Database service publishes a host port
Use `expose` for service-to-service access, bind to 127.0.0.1 for local-only access, or protect the port with firewall rules.
3 files, 3 locations
managed/docker-compose.yml:42
src/postgres/third-party-extensions/postgresql_anonymizer/docker/docker-compose.yml:4
troubleshoot/backend/docker/docker-compose.yml:3
CI/CD securitycontainers
high Security checks cicd CI/CD security conf 0.95 Docker final stage runs as root
Create an application user after package installation and switch to it with USER appuser or USER 10001.
managed/devops/Dockerfile:6 CI/CD securitycontainers
high Security checks cicd CI/CD security conf 0.92 16 occurrences Dockerfile copies the entire context without .dockerignore
Create .dockerignore before using broad context copies, or copy only the required files and directories.
12 files, 12 locations
managed/devops/Dockerfile:25
managed/devops/pex/Dockerfile:30
python/ai/rag_agent/Dockerfile:20
src/odyssey/docker/Dockerfile:52
src/odyssey/docker/dpkg/Dockerfile:7
src/postgres/third-party-extensions/mage/docker/Dockerfile:29
src/postgres/third-party-extensions/mage/docker/Dockerfile.dev:37
src/postgres/third-party-extensions/pgrx/.github/docker/Dockerfile.alpine:41
CI/CD securitycontainers
high Security checks cicd CI/CD security conf 0.92 5 occurrences Dockerfile pipes a remote script into a shell
Download the artifact, verify its checksum or signature, pin the version, and then execute it.
5 files, 5 locations
src/postgres/third-party-extensions/pg_parquet/.devcontainer/Dockerfile:45
src/postgres/third-party-extensions/pgrx/.github/docker/Dockerfile.alpine:48
src/postgres/third-party-extensions/pgrx/.github/docker/Dockerfile.amazon_2:76
src/postgres/third-party-extensions/pgrx/.github/docker/Dockerfile.debian_bullseye:54
src/postgres/third-party-extensions/pgrx/.github/docker/Dockerfile.fedora:47
CI/CD securitycontainers
low Security checks cicd CI/CD security conf 0.90 ✓ Repobility 23 occurrences GitHub Action is tag-pinned rather than SHA-pinned
[MINED115] Action `actions/checkout` pinned to mutable ref `@v4`: `uses: actions/checkout@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lo…
12 files, 23 locations
src/postgres/third-party-extensions/pg_stat_monitor/.github/workflows/postgresql-15-build.yml:10, 76, 110, 137 (4 hits)
src/postgres/third-party-extensions/pg_stat_monitor/.github/workflows/postgresql-16-build.yml:10, 76, 110, 137 (4 hits)
.github/workflows/oss-commit-tracker.yml:35, 41 (2 hits)
.github/workflows/yugabyted-test.yml:29, 32 (2 hits)
src/odyssey/.github/workflows/coverity.yml:13, 16 (2 hits)
src/postgres/third-party-extensions/pg_stat_monitor/.github/workflows/postgresql-13-ppg-package.yml:10, 77 (2 hits)
src/postgres/third-party-extensions/pg_stat_monitor/.github/workflows/postgresql-16-ppg-package.yml:10, 78 (2 hits)
.github/workflows/pr-lint.yml:14
CI/CD securitySupply chainGitHub Actions
medium Security checks cicd CI/CD security conf 0.90 ✓ Repobility 2 occurrences GitHub Action is tag-pinned rather than SHA-pinned
[MINED115] Action `RafikFarhad/clang-format-github-action` pinned to mutable ref `@v1.0.1`: `uses: RafikFarhad/[email protected]` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly…
2 files, 2 locations
src/odyssey/.github/workflows/clang-format.yml:8
src/odyssey/.github/workflows/cmake.yml:51
CI/CD securitySupply chainGitHub Actions
medium Security checks quality Quality conf 1.00 ✓ Repobility 13 occurrences [MINED109] Mutable default argument in `change_instance_type` (list): `def change_instance_type(... = []/{}/set())` — Python's default value is constructed ONCE at function definition time and shared across all calls. Mutating it in one call mutates it for every future call too.
Use None as the default and create the collection inside the function: `def change_instance_type(x=None): x = x or []`
8 files, 13 locations
managed/devops/opscli/ybops/cloud/azure/utils.py:747, 863, 890 (3 hits)
src/lint/cpplint.py:6083, 6234, 6367 (3 hits)
python/yugabyte/lto.py:130, 164 (2 hits)
managed/devops/opscli/ybops/cloud/common/command.py:85
managed/devops/opscli/ybops/utils/replicated.py:98
python/yugabyte/download_and_extract_archive.py:128
python/yugabyte/inline_thirdparty.py:239
python/yugabyte/run_tests_on_spark.py:275
medium Security checks quality Quality conf 1.00 ✓ Repobility 7 occurrences [MINED109] Mutable default argument in `run_tool` (dict): `def run_tool(... = []/{}/set())` — Python's default value is constructed ONCE at function definition time and shared across all calls. Mutating it in one call mutates it for every future call too.
Use None as the default and create the collection inside the function: `def run_tool(x=None): x = x or []`
6 files, 7 locations
managed/devops/bin/yb_backup.py:1788, 2298 (2 hits)
managed/devops/opscli/ybops/cloud/azure/utils.py:430
python/ai/rag_agent/html_processing/process_html.py:173
python/ai/rag_agent/pdf_processing/process_pdf.py:186
python/ai/rag_agent/rag_pipeline/partition_chunk_pipeline.py:86
python/yugabyte/yb_dist_tests.py:79
medium Security checks software dependencies conf 0.90 ✓ Repobility 25 occurrences [MINED124] requirements.txt: `autorepr` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins.
Replace `autorepr` with `autorepr==<version>` and manage upgrades through PRs / Dependabot.
lines 1, 2, 3, 4, 5, 6, 7, 8, +17 more
requirements.txt:1, 2, 3, 4, 5, 6, 7, 8, +17 more (25 hits)
low Security checks security Injection conf 0.50 [SEC005] Command Injection Risk: Unsafe shell execution or eval of user input.
Use subprocess with shell=False and a list of args. Never eval user input.
managed/devops/opscli/ybops/scripts/generateMetadataFiles.py:61
low Security checks security Deserialization conf 1.00 3 occurrences [SEC007] Unsafe Deserialization: Unsafe deserialization can execute arbitrary code.
Use yaml.safe_load() instead of yaml.load(). Avoid pickle for untrusted data.
3 files, 3 locations
build-support/stabilize_auto_flags_list.py:54
managed/src/main/java/com/yugabyte/yw/common/ConfigHelper.java:107
managed/src/main/java/com/yugabyte/yw/common/PrometheusConfigManager.java:98
medium Security checks security path traversal conf 1.00 [SEC012] ZipSlip — Archive Path Traversal: Archive extraction without path validation allows writing files outside the target directory.
Validate extracted paths with os.path.realpath() and ensure they stay within the target directory.
managed/src/main/java/com/yugabyte/yw/models/FileData.java:199
medium Security checks security path traversal conf 1.00 [SEC012] ZipSlip — Archive Path Traversal: Archive extraction without path validation allows writing files outside the target directory.
Validate extracted paths with os.path.realpath() and ensure they stay within the target directory.
managed/src/main/java/com/yugabyte/yw/common/utils/FileUtils.java:275
medium Security checks software Resource exhaustion conf 1.00 [SEC037] Uncontrolled Recursion — stack/depth exhaustion: Parsing arbitrary-depth user input (XML, JSON, YAML) without a depth limit, or recursive function over user-controlled structure. Attacker sends `{"a":{"a":{"a":...10000 levels...}}}` to blow the stack. Real CVEs: CVE-2019-16935 (Python xmlrpc), CVE-2020-25659 (PyYAML before 5.4). CWE-674/1325.
Use `defusedxml.ElementTree` instead of `xml.etree.ElementTree` — it rejects deeply-nested + billion-laughs payloads. For JSON: set a depth limit explicitly: import json data = json.loads(s) # then validate structure depth manually For YAML: always use `yaml.safe_load`. For recursive code over…
managed/src/main/java/com/yugabyte/yw/common/ConfigHelper.java:107
medium Security checks security Security conf 1.00 [SEC119] World-writable / world-readable file permissions: World-writable files let any local user (or container neighbor) tamper with data; world-readable files leak secrets.
Use 0600 (owner rw only) for secrets, 0644 for general files, 0700 for directories with secrets. Java: `setReadable(true, true)` (owner-only).
managed/src/main/java/com/yugabyte/yw/common/utils/FileUtils.java:193
medium Security checks cicd CI/CD security conf 0.86 App service does not wait for database health
Give the database a healthcheck and change the dependency to `depends_on: { db: { condition: service_healthy } }`.
src/postgres/third-party-extensions/pg_parquet/.devcontainer/docker-compose.yml:1 CI/CD securitycontainers
low Security checks quality Error handling conf 0.55 ✓ Repobility 25 occurrences Broad exception handler needs review
This handler catches Exception/BaseException. It is actionable when it swallows errors without logging, re-raising, or returning a structured error. Handlers that intentionally convert exceptions into typed error results should not be treated as high risk.
12 files, 25 locations
managed/devops/opscli/ybops/scripts/generateMetadataFiles.py:67, 87, 111, 140, 168 (5 hits)
managed/node-agent/ybops/node_agent/rpc.py:194, 247, 292, 378 (4 hits)
managed/devops/bin/yb_backup.py:2994, 3650, 4121 (3 hits)
managed/devops/bin/yb_netprob.py:252, 280, 374 (3 hits)
managed/devops/bin/run_node_action.py:431, 449 (2 hits)
managed/devops/opscli/ybops/utils/remote_shell.py:244, 322 (2 hits)
build-support/lint.py:430
managed/devops/bin/yb_platform_util.py:75
Error handlingquality
high Security checks security auth conf 0.82 9 occurrences Browser storage is used for session token material
Prefer httpOnly, Secure, SameSite cookies or short-lived in-memory tokens. Avoid persistent browser storage for access, refresh, ID, or partner session tokens.
8 files, 9 locations
managed/ui/src/actions/customers.js:212, 216 (2 hits)
managed/ui/src/actions/universe.js:855
managed/ui/src/components/common/forms/LoginForm/LoginFormContainer.js:28
managed/ui/src/components/common/forms/RegisterForm/RegisterFormContainer.js:24
managed/ui/src/components/profile/UserProfileForm.jsx:40
managed/ui/src/components/restore/GlobalRestoreModal.tsx:55
managed/ui/src/config.js:29
managed/ui/src/routes.jsx:100
medium Security checks cicd CI/CD security conf 0.94 6 occurrences Compose service `yugaware` image uses the latest tag
Pin to a maintained version tag or digest and update it deliberately through dependency automation.
2 files, 6 locations
managed/docker-compose.yml:4, 28, 42, 60, 95 (5 hits)
src/postgres/third-party-extensions/postgresql_anonymizer/docs/how-to/docker-compose.yml:2
CI/CD securitycontainers
medium Security checks cicd CI/CD security conf 0.72 Compose service adds dangerous Linux capabilities
Drop all capabilities by default and add only narrowly required capabilities after review.
src/postgres/third-party-extensions/pg_parquet/.devcontainer/docker-compose.yml:1 CI/CD securitycontainers
medium Security checks cicd CI/CD security conf 0.84 Database data bind mount is inside the Docker build context
Prefer a named volume or a host path outside the build context. If a repo-local path is required, add it to .dockerignore and .gitignore and verify backups separately.
src/postgres/third-party-extensions/pg_duckdb/docker-compose.yml:1 CI/CD securitycontainers
medium Security checks cicd CI/CD security conf 0.86 Database dump or local database file is included in Docker build context
Move database dumps outside the Docker build context or exclude them with .dockerignore. Keep backup and restore artifacts in private object storage or a dedicated backup workflow.
.dockerignore CI/CD securitycontainers
medium Security checks cicd CI/CD security conf 0.88 3 occurrences Database service has no healthcheck
Add a database-native healthcheck such as pg_isready, mysqladmin ping, redis-cli ping, or the vendor's readiness command.
3 files, 3 locations
managed/docker-compose.yml:42
src/postgres/third-party-extensions/postgresql_anonymizer/docker/docker-compose.yml:4
troubleshoot/backend/docker/docker-compose.yml:3
CI/CD securitycontainers
medium Security checks cicd CI/CD security conf 0.74 Database service has no persistent data volume
Mount the database data directory to a named Docker volume or managed persistent disk, and document backup and restore testing.
src/postgres/third-party-extensions/pg_parquet/.devcontainer/docker-compose.yml:26 CI/CD securitycontainers
medium Security checks cicd CI/CD security conf 0.74 Database service has no persistent data volume
Mount the database data directory to a named Docker volume or managed persistent disk, and document backup and restore testing.
src/postgres/third-party-extensions/mage/drivers/docker-compose.yml:2 CI/CD securitycontainers
medium Security checks cicd CI/CD security conf 0.90 Docker build context has no .dockerignore
Add .dockerignore with at least .git, .env, private keys, dependency folders, build outputs, and local databases.
.dockerignore CI/CD securitycontainers
medium Security checks cicd CI/CD security conf 0.84 Docker build context is very large
Shrink the build context with .dockerignore, move generated/runtime data outside the build context, and copy only the manifest files needed for cached dependency layers.
.dockerignore CI/CD securitycontainers
high Security checks cicd CI/CD security conf 0.82 15 occurrences Docker final stage has no non-root USER
Add a non-root USER in the final runtime stage after files and permissions are prepared.
12 files, 12 locations
.claude/Dockerfile:1
.cursor/Dockerfile:1
.devcontainer/Dockerfile:1
managed/devops/pex/Dockerfile:2
managed/ui/Dockerfile:1
managed/yba-installer/integrationtests/resources/Dockerfile:1
src/odyssey/docker/Dockerfile:14
src/odyssey/docker/dev/Dockerfile:1
CI/CD securitycontainers
medium Security checks cicd CI/CD security conf 0.94 5 occurrences Dockerfile base image uses the latest tag
Pin to a maintained version tag or digest and update it deliberately through dependency automation.
5 files, 5 locations
.claude/Dockerfile:1
.cursor/Dockerfile:1
.devcontainer/Dockerfile:1
src/odyssey/docker/Dockerfile:1
src/postgres/third-party-extensions/postgresql_anonymizer/docker/Dockerfile:10
CI/CD securitycontainers
medium Security checks cicd CI/CD security conf 0.86 9 occurrences Dockerfile separates apt update from install
Combine update and install in the same RUN instruction and clean package indexes in that layer.
6 files, 9 locations
src/postgres/third-party-extensions/pg_parquet/.devcontainer/Dockerfile:9, 23 (2 hits)
src/postgres/third-party-extensions/pgaudit/test/Dockerfile.debian:4, 21 (2 hits)
src/postgres/third-party-extensions/pgrx/.github/docker/Dockerfile.debian_bullseye:17, 21 (2 hits)
src/postgres/third-party-extensions/documentdb/.devcontainer/Dockerfile:41
src/postgres/third-party-extensions/documentdb/.github/containers/Build-Ubuntu/Dockerfile:41
src/postgres/third-party-extensions/mage/docker/Dockerfile.dev:22
CI/CD securitycontainers
high Security checks quality Quality conf 0.82 Parallel implementation file sits beside a canonical file
Merge the intended change into the canonical file, update tests/imports, and delete the parallel implementation if it is not the active entry point.
src/postgres/src/include/optimizer/geqo_copy.h:1
high Security checks quality Quality conf 0.82 Parallel implementation file sits beside a canonical file
Merge the intended change into the canonical file, update tests/imports, and delete the parallel implementation if it is not the active entry point.
src/postgres/src/backend/utils/adt/tsquery_rewrite.c:1
high Security checks software dependencies conf 0.70 Remote install command pipes network code directly to a shell
Publish a package-manager install path or add checksum/signature verification before execution. For docs, show the inspect-then-run flow and pin the downloaded artifact version.
bin/configure_clockbound.sh:245
medium Security checks quality Quality conf 0.88 sitemap.xml is not valid XML
Regenerate sitemap.xml with valid XML and validate it before deploy.
docs/layouts/sitemap.xml
medium Security checks quality Quality conf 0.78 4 occurrences Suspicious implementation file appears unreferenced
Confirm whether this file is reachable. If not, delete it; if yes, wire it through explicit imports, routes, or entry points and add a test that proves the path executes.
4 files, 4 locations
managed/src/main/java/db/migration/default_/common/V160__Provider_Config_Encryption_Update.java:1
managed/src/main/java/db/migration/default_/common/V289__Universe_Details_Arch_Update.java:1
managed/src/main/java/db/migration/default_/postgres/V195__DB_Encryption_Update.java:1
managed/src/main/java/db/migration/default_/postgres/V417__Add_First_Snapshot_Time_Backup.java:1
low Security checks quality Error handling conf 1.00 [ERR003] Ignored Error (Go): Ignoring error return values.
Handle the error or use errcheck linter.
managed/node-agent/ynp/config/setup_logger.go:61
low Security checks quality Error handling conf 1.00 [ERR003] Ignored Error (Go): Ignoring error return values.
Handle the error or use errcheck linter.
managed/node-agent/app/task/module/download_setup_package.go:23
low Security checks cicd CI/CD security conf 0.68 App service does not wait for database health
Give the database a healthcheck and change the dependency to `depends_on: { db: { condition: service_healthy } }`.
managed/docker-compose.yml:4 CI/CD securitycontainers
high Security checks cicd CI/CD security conf 0.56 11 occurrences Compose service does not declare a runtime user
Set a non-root `user:` in Compose or ensure the final image stage has a non-root USER directive.
7 files, 11 locations
src/odyssey/docker-compose.yml:3, 15, 29, 40 (4 hits)
managed/docker-compose.yml:4, 77 (2 hits)
src/postgres/third-party-extensions/mage/drivers/docker-compose.yml:2
src/postgres/third-party-extensions/pg_duckdb/docker-compose.yml:1
src/postgres/third-party-extensions/pg_parquet/.devcontainer/docker-compose.yml:1
src/postgres/third-party-extensions/pgtap/test/docker-compose.yml:3
troubleshoot/backend/docker/docker-compose.yml:17
CI/CD securitycontainers
high Security checks cicd CI/CD security conf 0.62 9 occurrences Compose service lacks no-new-privileges hardening
Add `security_opt: ["no-new-privileges:true"]` unless the service has a documented need for privilege escalation.
5 files, 9 locations
src/odyssey/docker-compose.yml:3, 15, 29, 40 (4 hits)
managed/docker-compose.yml:4, 77 (2 hits)
src/postgres/third-party-extensions/pg_parquet/.devcontainer/docker-compose.yml:1
src/postgres/third-party-extensions/pgtap/test/docker-compose.yml:3
troubleshoot/backend/docker/docker-compose.yml:17
CI/CD securitycontainers
low Security checks cicd CI/CD security conf 0.58 Database password is wired through an environment variable placeholder
Prefer Compose secrets or your platform secret manager with *_FILE variables where the image supports them. Rotate only if a real value was committed.
troubleshoot/backend/docker/docker-compose.yml:3 CI/CD securitycontainers
low Security checks cicd CI/CD security conf 0.58 Database password is wired through an environment variable placeholder
Prefer Compose secrets or your platform secret manager with *_FILE variables where the image supports them. Rotate only if a real value was committed.
src/postgres/third-party-extensions/postgresql_anonymizer/docker/docker-compose.yml:4 CI/CD securitycontainers
low Security checks cicd CI/CD security conf 0.72 Database service has no healthcheck
Add a database-native healthcheck such as pg_isready, mysqladmin ping, redis-cli ping, or the vendor's readiness command.
src/postgres/third-party-extensions/pg_duckdb/docker-compose.yml:1 CI/CD securitycontainers
low Security checks cicd CI/CD security conf 0.72 Database service has no healthcheck
Add a database-native healthcheck such as pg_isready, mysqladmin ping, redis-cli ping, or the vendor's readiness command.
src/postgres/third-party-extensions/mage/drivers/docker-compose.yml:2 CI/CD securitycontainers
low Security checks cicd CI/CD security conf 0.72 11 occurrences Dockerfile installs recommended OS packages
Add `--no-install-recommends` and explicitly list only packages the image needs.
6 files, 11 locations
src/postgres/third-party-extensions/documentdb/.devcontainer/Dockerfile:11, 106 (2 hits)
src/postgres/third-party-extensions/documentdb/.github/containers/Build-Ubuntu/Dockerfile:11, 99 (2 hits)
src/postgres/third-party-extensions/pg_duckdb/Dockerfile:9, 61 (2 hits)
src/postgres/third-party-extensions/pgaudit/test/Dockerfile.debian:5, 26 (2 hits)
src/postgres/third-party-extensions/pgrx/.github/docker/Dockerfile.debian_bullseye:18, 22 (2 hits)
src/postgres/third-party-extensions/pg_parquet/.devcontainer/Dockerfile:18
CI/CD securitycontainers
high Security checks cicd CI/CD security conf 0.72 Dockerfile keeps pip download cache
Use `pip install --no-cache-dir ...` in container builds.
managed/devops/pex/Dockerfile:19 CI/CD securitycontainers
high Security checks cicd CI/CD security conf 0.72 Dockerfile keeps pip download cache
Use `pip install --no-cache-dir ...` in container builds.
docker/images/yugabyte/Dockerfile:90 CI/CD securitycontainers
low Security checks cicd CI/CD security conf 0.74 9 occurrences Dockerfile leaves apt package indexes in the image layer
End the apt install layer with `rm -rf /var/lib/apt/lists/*`.
6 files, 9 locations
src/odyssey/docker/Dockerfile:20, 35 (2 hits)
src/odyssey/docker/dev/Dockerfile:11, 22 (2 hits)
src/postgres/third-party-extensions/mage/docker/Dockerfile:22, 39 (2 hits)
src/odyssey/docker/dpkg/Dockerfile:13
src/postgres/third-party-extensions/pg_duckdb/Dockerfile:61
src/postgres/third-party-extensions/pg_parquet/.devcontainer/Dockerfile:18
CI/CD securitycontainers
low Security checks quality Quality conf 0.64 Duplicate top-level symbol appears in a patch-style file
Keep one authoritative implementation, update imports to point at it, and remove or rename the duplicate symbol.
src/yb/yql/cql/ql/ptree/pt_update.h:1
low Security checks quality Quality conf 0.60 27 occurrences Duplicated implementation block across source files
Duplicate implementation blocks are maintenance debt. Keep them visible, but they are not a high-severity defect unless the duplicated logic is security-sensitive or drifting.
12 files, 12 locations
java/yb-client/src/main/java/org/yb/client/CdcSdkCheckpoint.java:15
java/yb-client/src/main/java/org/yb/client/ChangeConfigResponse.java:8
java/yb-client/src/main/java/org/yb/client/ChangeLoadBalancerStateResponse.java:8
java/yb-client/src/main/java/org/yb/client/ChangeMasterClusterConfigResponse.java:9
java/yb-client/src/main/java/org/yb/client/ChangeXClusterRoleResponse.java:8
java/yb-client/src/main/java/org/yb/client/CreateKeyspaceResponse.java:8
java/yb-client/src/main/java/org/yb/client/CreateXClusterReplicationResponse.java:8
java/yb-client/src/main/java/org/yb/client/DeleteSnapshotScheduleResponse.java:8
duplicationquality
high Security checks quality Quality conf 0.62 11 occurrences Source file name looks like an AI patch artifact
Rename it to the domain concept it implements or merge it into the existing module it was meant to change.
11 files, 11 locations
managed/src/main/java/db/migration/default_/common/V160__Provider_Config_Encryption_Update.java:1
managed/src/main/java/db/migration/default_/common/V289__Universe_Details_Arch_Update.java:1
managed/src/main/java/db/migration/default_/postgres/V195__DB_Encryption_Update.java:1
managed/src/main/java/db/migration/default_/postgres/V417__Add_First_Snapshot_Time_Backup.java:1
src/postgres/src/backend/optimizer/geqo/geqo_copy.c:1
src/postgres/src/include/catalog/pg_rewrite.h:1
src/postgres/third-party-extensions/documentdb/pg_documentdb/include/update/bson_update.h:1
src/postgres/third-party-extensions/documentdb/pg_documentdb/src/update/bson_update.c:1
For AI agents: Voting guide (TP/FP) MCP manifest Stdio wrapper SARIF Integrate Findings queue Vote TP/FP on findings to calibrate the engine.
For AI agents + API integrations
Email me when this repo regresses
Free. We re-scan periodically; new criticals → your inbox. No signup required for the scan itself.
API access

This page is publicly accessible at: https://repobility.com/scan/1ef6c72a-4ac4-42c5-8abb-dfdbe54f196e/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/1ef6c72a-4ac4-42c5-8abb-dfdbe54f196e/

Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.