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
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
Harten documentation of the Informix 4GL and Java source repository, from the retained 17 October 2026 export. The exact upstream revision analysed is not established. Source findings do not establish runtime behaviour or equivalence between the implementations.
Evidence identifiers are retained for traceability. The underlying analysis records are not included in this public edition; credential values are redacted. About this case study.