freenode
AnalysisRadar

Trust by default still rules the data plane

A cluster of CVSS 9.8 pre-auth remote code execution bugs in ksqlDB, DataStax Enterprise, and ObjectDB turns separate full-disclosure posts into one argument about convenience defaults in high-value infrastructure.

Three full-disclosure advisories landed in quick succession, each scoring CVSS 9.8 and each describing remote code execution that needs no real credentials. The targets are not obscure toys. They are Confluent Platform's ksqlDB stack, DataStax Enterprise's Gremlin surface, and ObjectDB in server mode: systems that sit close to production data and that many operators still stand up with the knobs left where the installer put them. The disclosures, published by the group styling itself 0day Rubbish Research Team, do not read as isolated mishaps. Read together they form a single indictment of trust-by-default design in databases and streaming platforms, and of the operational culture that still treats internal reachability as equivalent to authorization.

The through-line is blunt. In each case the dangerous surface is either completely unauthenticated in the shipped configuration or guarded only by factory credentials that are never forced to change. ksqlDB, the Kafka broker in PLAINTEXT, and Kafka Connect accept work without authentication. DataStax Enterprise's Gremlin Server inherits TinkerPop's allowAll authenticator because the authentication block is left commented out. ObjectDB ships admin/admin with full privileges and an IP check that effectively accepts any source when no restriction attribute is set. None of these are exotic misconfigurations invented by the researcher. They are the paths of least resistance that make a first cluster come up cleanly for a developer or a proof-of-concept lab, and that too often remain in place when the same binary moves toward real data.

The technical substance differs, yet the trust model does not. On the Confluent side the chain runs through the ability to create a sink connector and to produce messages to a topic; the connector's job of writing those messages somewhere becomes a vehicle for control of the host process. On DataStax the Gremlin-Groovy sandbox is present and enabled, which looks like defense in depth until nested evaluation is considered: a fresh shell compiled without the sandbox transformer turns the protective boundary into a suggestion. ObjectDB's JDOQL filter evaluation reaches reflective static method invocation with no meaningful class allowlist, so query text becomes a remote call into the JVM that is running as a privileged user. In every instance the process identity is powerful enough that compromise of the service is compromise of the host and of the data it holds. The researchers emphasize the same verification language across the set: dynamically confirmed execution as a high-privilege account, no credentials required beyond what the default install already grants.

That framing forces a familiar argument into the open. One side, embodied by the full-disclosure posts themselves, treats the defaults as the product. If the documented happy path leaves management ports, query engines, and connector APIs open to anyone who can route packets to them, then the vulnerability is not "operator error" after the fact; it is the design that operators are invited to deploy. The posts stress impact in operational terms: arbitrary commands, filesystem read and destroy, persistence, and full control of the deployment. They also stress the absence of any authentication gate worth the name. The implicit claim is that convenience for the first hour of setup has been allowed to dominate the threat model for the remaining years of the system's life, and that high CVSS scores are the predictable result when those systems hold valuable state.

The other side is less vocal in these particular threads yet remains the dominant practice in large estates. Streaming and graph layers are frequently deployed inside private networks, service meshes, or VPC boundaries where the historical assumption has been that network location is the control. Authentication and authorization add latency to bring-up, complicate local development and integration tests, and interact poorly with the very connector and query flexibility that makes ksqlDB, Gremlin, and JDOQL attractive. Vendors optimize for that experience: commented-out auth stanzas, allowAll defaults, and well-known bootstrap credentials are not accidents so much as acknowledgments that a locked-down out-of-box posture loses bake-offs and tutorial traffic. Operators who steelman this view argue that a database engine is not a public web application; binding it to localhost or to an internal overlay is a legitimate deployment pattern, and that calling every open management port a pre-auth RCE flattens important distinctions about exposure. They also note that turning every powerful server-side language feature (Groovy evaluation, reflective query filters, file-backed connectors) into a fully sandboxed, capability-limited subset is expensive and incomplete, and that many customers accept the trade for expressiveness.

Both positions have force. The disclosures show that "internal only" is a brittle control once any path exists from a lower-trust network, a compromised jump host, a CI runner, or a neighboring workload in a shared cluster. Lateral movement does not respect the original architectural diagram. At the same time, the products under discussion are valuable precisely because they evaluate rich logic close to the data. Sandboxes that only wrap the outer script, connector frameworks that must write files and call external systems, and query languages that can reach the runtime are not trivial to constrain without becoming a different product. The cluster of bugs does not prove that authentication was impossible; it proves that authentication and least privilege were optional in the configurations that people actually run.

What remains unresolved is where responsibility hardens into requirement. Full disclosure with working proof-of-concept material accelerates patch pressure and scanner coverage, yet it also hands a ready recipe to anyone who can find an unpatched instance still sitting on its defaults. Coordinated disclosure might have produced quieter fixes and clearer vendor advisories, but the researchers' choice to publish simultaneously across three stacks underscores their thesis that the pattern is systemic rather than a one-off vendor lapse. Vendors can ship forced credential rotation, authenticated listeners by default, and tighter sandboxes; operators can refuse to expose management ports and can treat default passwords as build failures. Neither side has demonstrated that the incentives have actually shifted. Streaming platforms and operational databases continue to compete on time-to-first-query. Until secure-by-default configurations are the path that wins demos and satisfies compliance checklists without extra work, the next advisory will likely read like the last three: critical score, no real credentials, and a reminder that trust was never negotiated, only assumed.