Wayfinder / Case study / Diagram galleries

Source-derived document; reported behaviour, inference and evidence gaps are identified in the text.

Return to: Security boundaries

Security boundaries

In this document

Where do trust or privileges change, which flows cross those boundaries, and what controls are evidenced?

This view identifies the documented points where user-supplied commands or constructed SQL move toward execution, treating those points as security boundaries rather than as proof of a vulnerability or adequate protection E0012. The command path is evidenced from D4_Main.bang() to _app.execute(...); the effective permissions and behavior of Application.execute() are not supplied E0012. The SQL path is evidenced from D4_Report.print_labels() through a concatenated predicate and a prepared-statement API toward the database E0012.

“Crosses” means that the supplied evidence shows data or execution intent moving across an inferred trust or privilege boundary; it does not establish the boundary’s runtime enforcement. The source shows no command allowlist, validation, or sanitization, while SQL predicate restriction or sanitization remains unknown E0012. Database schema details and framework behavior are also incomplete E0011E0012.

Diagram

Source-derived diagram. Some relationships may be inferred and require review.

Preparing diagram…

View Mermaid diagram source
flowchart LR
  n6dba922b2ca42b6f3a00["User"]
  nfd766e5482184b8d49e5["D4_Main"]
  n08c96eadd32d546d0674["Command execution boundary (inferred)"]
  nd338efe9f2ec3ccd1544["Application.execute"]
  nd94623ea8a5d52261b4d["D4_Report"]
  nb80d98fe18be2598c93f["SQL query-construction boundary (inferred)"]
  n8101aff0c90fd7d08945["Informix database"]
  nfd766e5482184b8d49e5 -.->|"Command handoff (inferred)"| n08c96eadd32d546d0674
  n08c96eadd32d546d0674 -->|"Execution API crossing"| nd338efe9f2ec3ccd1544
  nd94623ea8a5d52261b4d -->|"SQL construction crossing"| nb80d98fe18be2598c93f
  nb80d98fe18be2598c93f -->|"Database query crossing"| n8101aff0c90fd7d08945

Elements

User

Kind: actor
Basis: reported
Description: An interactive user supplies a command to the bang() flow; the source does not establish the user’s operating-system or database privileges E0012.
Evidence: E0012
Goal: Submit an application command or define customer-selection criteria for a report.
Owner: Not established.

D4_Main

Kind: component
Basis: reported
Description: D4_Main is the central application controller, and its bang() method reads a command and passes it to _app.execute(true, Str.valueOf(cmd)) E0011E0012.
Evidence: E0011E0012

Command execution boundary

Kind: boundary
Basis: inferred
Description: This boundary represents the handoff from application-collected command text to the framework execution API. The source shows no allowlist, validation, or sanitization before the handoff E0012.
Evidence: E0012

Application.execute

Kind: component
Basis: reported
Description: Application.execute() receives the command from D4_Main.bang(), but its implementation, effective privileges, and exact execution behavior are not supplied E0012.
Evidence: E0012

D4_Report

Kind: component
Basis: reported
Description: D4_Report.print_labels() obtains a predicate from construct.getQuery(), concatenates it into a customer SQL statement, and submits the resulting text through a prepared-statement API E0012.
Evidence: E0011E0012

SQL query-construction boundary

Kind: boundary
Basis: inferred
Description: This boundary represents the transition from a report predicate to SQL text. The predicate is incorporated into the SQL string rather than visibly supplied as a bound parameter E0012.
Evidence: E0012

Informix database

Kind: external_system
Basis: reported
Description: The application performs database interaction through JDBC against an Informix database; the supplied material identifies the stores7 schema and also reports a configured database connection targeting stores_demo, so the exact runtime database context is not fully reconciled E0011E0013.
Evidence: E0011E0013

Relationships

Command handoff

From: D4_Main
To: Command execution boundary
Relation: crosses
Basis: inferred
Description: The controller accepts interactive command text and passes it toward the framework execution API, creating an application-to-execution privilege handoff E0012.
Trigger: User submits input through bang() E0012.
Guard: No allowlist or input-validation guard is evidenced E0012.
Information: User-entered command text E0012.
Mechanism: _app.execute(true, Str.valueOf(cmd)) E0012.
Trust change: Untrusted interactive text enters a security-sensitive execution path; the resulting privilege scope is unknown E0012.
Control: No command allowlist, validation, or sanitization is evidenced; control effectiveness is unverified E0012.
Evidence type: Published source analysis, not runtime verification E0012 Evidence: E0012

Execution API crossing

From: Command execution boundary
To: Application.execute
Relation: crosses
Basis: reported
Description: D4_Main.bang() passes the collected command to Application.execute() through the application API E0012.
Trigger: bang() invokes the execution call after reading the command E0012.
Guard: The supplied evidence does not show a guard implemented by Application.execute() E0012.
Information: The command string supplied by the user E0012.
Mechanism: Application execution API E0012.
Trust change: The command moves from application input handling into a framework-controlled execution context; effective privileges and command restrictions are unknown E0012.
Control: Framework-side restrictions, if any, are unverified because the implementation is unavailable E0012.
Evidence type: Published source analysis, not runtime verification E0012 Evidence: E0012

SQL construction crossing

From: D4_Report
To: SQL query-construction boundary
Relation: crosses
Basis: reported
Description: print_labels() incorporates the predicate returned by construct.getQuery() into a SQL statement before preparing it E0012.
Trigger: The report’s customer-selection query is constructed E0012.
Guard: Any restriction or sanitization performed by Construct.getQuery() is unknown E0012.
Information: A customer-selection predicate and the surrounding SQL statement E0012.
Mechanism: String concatenation followed by the prepared-statement API E0012.
Trust change: A report predicate enters SQL construction, where its content can affect database query text; injection is not established by the supplied evidence E0012.
Control: Use of a prepared-statement API is evidenced, but parameter binding for the predicate and predicate sanitization are unverified E0012.
Evidence type: Published source analysis, not runtime verification E0012 Evidence: E0012

Database query crossing

From: SQL query-construction boundary
To: Informix database
Relation: crosses
Basis: reported
Description: The constructed customer query is submitted through Application.getDB().prepareStatement(...) toward the Informix database E0011E0012.
Trigger: D4_Report.print_labels() prepares the constructed query E0012.
Guard: The supplied evidence does not establish database authorization checks, least-privilege configuration, or safe predicate handling E0012E0013.
Information: SQL text containing the report predicate E0012.
Mechanism: JDBC prepared-statement API E0011E0012.
Trust change: Application-generated SQL is sent to the database execution layer; database identity and effective authorization are not established for this flow E0012E0013.
Control: Prepared-statement API usage is evidenced, but protection against unsafe predicate composition and the database privilege model are unverified E0012E0013.
Evidence type: Published source and configuration analysis, not runtime verification E0012E0013 Evidence: E0011 E0012 E0013

Gaps

The implementation and privilege scope of Application.execute() are missing, so the actual command target, operating-system authority, and framework controls cannot be determined E0012. The source does not establish whether command input is restricted elsewhere before bang() invokes the execution API E0012.

Construct.getQuery() is not supplied, so its syntax restrictions, escaping, validation, and parameterization behavior remain unresolved; the concatenation is a review concern, not proof of SQL injection E0012. The database schema and effective database authorization model are also not fully documented E0011E0012E0013.

The supplied material reports conflicting database context: one source identifies the stores7 schema, while configuration evidence reports a connection targeting stores_demo E0011E0013. No source establishes which database context applies to the analyzed execution path.

No evidence establishes formal boundary enforcement, command or SQL monitoring, least privilege, or successful runtime behavior. Follow-up should obtain the Application.execute() and Construct.getQuery() implementations, database authorization configuration, and execution traces or tests for both paths E0012E0013.

Recovery limitations

  • Ownership, mechanism or boundary controls remain explicitly unverified.
  • Some identified concepts have no supported connection.
  • The view includes explicitly marked inference.

Sources

  • E0011 — SHA256 be5e6746cc70e5b5af8caf785fb6efb113f28a7ab2080be3603561a173bbcb0c
  • E0012 — SHA256 b17ef2d84bcd51af76724530e686489917c4271029456ef08648f9aa518bfa2b
  • E0013 — SHA256 112de6889543e63b72f8ca740358ab46bcef10193b22310ea1cdeb85dbf5ba0e