SV-255312r1112456_rule
V-255312
SRG-APP-000251-DB-000392
ASQL-00-002300
CAT II
10
Where dynamic code execution is used, modify the code to implement protections against code injection.
Review the system documentation to obtain a listing of stored procedures and functions that utilize dynamic code execution. Execute the following query:
DECLARE @tblDynamicQuery TABLE (ID INT identity(1,1), ProcToExecuteDynSQL VARCHAR(500))
INSERT INTO @tblDynamicQuery(ProcToExecuteDynSQL) values('EXEC[ (]@')
INSERT INTO @tblDynamicQuery(ProcToExecuteDynSQL) values('EXECUTE[ (]@')
INSERT INTO @tblDynamicQuery(ProcToExecuteDynSQL) values('SP_EXECUTESQL[ (]@')
SELECT
QUOTENAME(DB_Name()) DB_Name,
QUOTENAME(SCHEMA_NAME([schema_id])) + '.' + QUOTENAME(name) Name, QUOTENAME(type_desc) ObjectType
FROM sys.objects o
WHERE o.is_ms_shipped = 0 and
o.object_id IN (
SELECT m.object_id
FROM sys.sql_modules m
JOIN @tblDynamicQuery dsql ON REPLACE(REPLACE(REPLACE(m.definition,CHAR(32),'()'),')(',''),'()',CHAR(32)) like '%' + dsql.ProcToExecuteDynSQL + '%')
If any procedures or functions are returned that are not documented, this is a finding.
V-255312
False
ASQL-00-002300
Review the system documentation to obtain a listing of stored procedures and functions that utilize dynamic code execution. Execute the following query:
DECLARE @tblDynamicQuery TABLE (ID INT identity(1,1), ProcToExecuteDynSQL VARCHAR(500))
INSERT INTO @tblDynamicQuery(ProcToExecuteDynSQL) values('EXEC[ (]@')
INSERT INTO @tblDynamicQuery(ProcToExecuteDynSQL) values('EXECUTE[ (]@')
INSERT INTO @tblDynamicQuery(ProcToExecuteDynSQL) values('SP_EXECUTESQL[ (]@')
SELECT
QUOTENAME(DB_Name()) DB_Name,
QUOTENAME(SCHEMA_NAME([schema_id])) + '.' + QUOTENAME(name) Name, QUOTENAME(type_desc) ObjectType
FROM sys.objects o
WHERE o.is_ms_shipped = 0 and
o.object_id IN (
SELECT m.object_id
FROM sys.sql_modules m
JOIN @tblDynamicQuery dsql ON REPLACE(REPLACE(REPLACE(m.definition,CHAR(32),'()'),')(',''),'()',CHAR(32)) like '%' + dsql.ProcToExecuteDynSQL + '%')
If any procedures or functions are returned that are not documented, this is a finding.
M
5500