Coverage area · 1 check

Network exposure in code and service config

Which ports a service listens on, whether it requires authentication and whether it uses TLS are usually decided in code and config files. OpenRouting reviews those decisions in your repository.

docker-compose.prod.yml1redis:2 command: redis-server3 --protected-mode no4 ports:5 - "6379:6379"Netwhat this review answersDatastores published to all hosts?Services running without auth?Cleartext where TLS is expected?$ verdict REAL ISSUE$ fix internal network, auth, TLS▍

Illustrative example of how a finding in this area is reviewed.

Why this area matters

Databases and caches exposed to the internet without authentication are a steady source of data leaks; services bound to 0.0.0.0 or published from a compose file are often reachable far beyond where the developer intended. Cleartext transport (CWE-319) and disabled certificate validation (CWE-295) let anyone on the path read or change traffic.

Scanners flag 0.0.0.0 and HTTP URLs everywhere, including local development and health checks. The network agent checks which environment the config is for, whether the service requires authentication and whether traffic leaves a private network.

What goes wrong in real applications

  • Datastores exposed without authentication

    Redis, MongoDB, Elasticsearch and similar services published on all interfaces with auth disabled can be read or wiped by anyone who can reach them.

  • Cleartext protocols

    HTTP, FTP, telnet and unencrypted database connections expose credentials and data in transit.

  • Disabled certificate validation

    Skipping TLS verification makes encrypted connections open to interception.

  • Over-broad binding

    Services bound to 0.0.0.0 when they only need localhost or a private network are reachable from more places than intended.

Sample: the risky pattern and the fix

Riskydeploy/docker-compose.prod.yml
services:
  redis:
    image: redis:7
    command: redis-server --protected-mode no
    ports:
      - "6379:6379"
  mongo:
    image: mongo:8.2
    ports:
      - "27017:27017"
Saferdeploy/docker-compose.prod.yml
services:
  redis:
    image: redis:7
    command: redis-server /run/secrets/redis_conf   # requirepass, protected-mode yes
    secrets: [redis_conf]
    networks: [backend]                             # no published ports
  mongo:
    image: mongo:8.2
    environment:
      MONGO_INITDB_ROOT_PASSWORD_FILE: /run/secrets/mongo_root_password
    secrets: [mongo_root_password]
    networks: [backend]
networks:
  backend:
    internal: true
secrets:
  redis_conf:
    file: ./secrets/redis.conf
  mongo_root_password:
    file: ./secrets/mongo_root_password

The production compose file publishes Redis with protection disabled and MongoDB without credentials on every interface of the host. The fix keeps both on an internal network with no published ports and enables authentication with credentials supplied as secrets rather than in the file.

Illustrative code, simplified for clarity — not taken from a customer repository.

What OpenRouting checks in your repository

  • Ports and bind addresses in compose files, Kubernetes services and application config
  • Datastore and cache settings: authentication, protected mode, TLS
  • HTTP, FTP and telnet URLs and clients for non-local traffic
  • TLS verification flags in HTTP clients and database drivers
  • Whether a config is for local development or production (the main false-positive signal)

Scope and limits

  • It doesn't scan networks, ports or hosts and never sends traffic — it reviews the configuration and code that define your services.
  • Firewalls, cloud network rules and load balancers outside the repository may already block a flagged port; the finding says what the repo alone allows.

Coverage areas reflect OpenRouting's check library. Code, secret and infrastructure scanning run today; other areas are rolling out. Scanners surface candidates and a review agent decides whether each one is real — it doesn't promise to find every issue.

Review agents for this area

Common questions

Is OpenRouting a network scanner?

No. It never touches your network. It reviews the code and config that decide what your services expose.

Will it flag 0.0.0.0 in my local docker-compose file?

The scanner may. The network agent marks local-development configs as likely false positives with the reason, and focuses on production config.