原生 IMS 容易受到注入攻击吗?

Is native IMS vulnerable to injections?

this article 所示,DB2 可能容易受到 SQL 注入攻击:

* Potential SQL injection if X, Y or Z host variables come from untrusted input 
STRING "INSERT INTO TBL (a,b,c) VALUES (" X "," Y "," Z ")" INTO MY-SQL.
EXEC SQL PREPARE STMT FROM :MY-SQL END-EXEC.
EXEC SQL EXECUTE STMT END-EXEC.

我的问题是本机 IMS 命令是否容易受到此类(或类似)注入的攻击?例如,通过在 the ISRT DLI command 中植入恶意输入。

是的,所有支持 SQL 查询字符串运行时解析的 SQL 数据库都容易受到 SQL 注入的影响。

SQL 注入不是数据库技术的缺陷,而是您编写的构建 SQL 查询字符串的客户端代码的缺陷。

这取决于您计划如何访问 IMS 数据库。

引用自IBM document

The SQL statements that you issue through the web interface or the ISPF interface are executed as IMS application programming API in the IMS SPUFI application program in z/OS®. You can select COBOL or Java™ for the language environment to execute SQL statements.

如果您使用 SQL,您可能容易受到 SQL 注入攻击。

如果您使用本机 IMS 命令,可能不会。但是清理您的输入仍然是个好主意,即使是对于本机 IMS 命令也是如此。

我是 IBM IMS 团队的成员。

IMS DL/I 调用不是动态的,因此不像 SQL 调用那样容易受到影响。 CALL xxxTDLI IMS API 没有注入风险。话虽这么说,COBOL 程序可以通过允许对程序的输入影响传递给 xxxTDLI 的 SSA 列表或 IOAREA 参数来打开风险。因此,在针对这些接口进行编程时应遵循安全工程实践。

不,IMS DL/I 数据库根本不解析记录。将其视为像 Cassandra 这样的 NoSQL 数据库的早期版本。段键被解析为二进制值,但您不能像在 SQL 数据库中那样进行注入。

并且根据 programmers/IMS-admins 的技能,可以通过限制可用的 CRUD 操作范围来关闭攻击向量,这些操作可用于使用 PSB 中 PCB 的 PROCOPT 的程序。

大多数 IMS 系统+DB2 使用静态 SQL,因此语句已经准备好并且不易受到 SQL 注入攻击。