@hclsoftware/secagent
Version:
IAST agent
96 lines (91 loc) • 3.62 kB
JavaScript
//IASTIGNORE
/*
* ****************************************************
* Licensed Materials - Property of HCL.
* (c) Copyright HCL Technologies Ltd. 2017, 2025.
* Note to U.S. Government Users *Restricted Rights.
* ****************************************************
*/
const ArgsToStringRule = require('./ArgsToStringRule')
const ArgObjectsToStringRule = require('./ArgObjectsToStringRule')
const ThatToStringRule = require('./ThatToStringRule')
const ThatElementsToStringRule = require('./ThatElementsToStringRule')
const AddHookValueNamesRule = require('./AddHookValueNamesRule')
const SkipOrigMethodRule = require('./SkipOrigMethodRule')
const WrapCallbackRealpathRule = require('./WrapCallbackRealpathRule')
const NoOpRule = require('./NoOpRule')
const RabbitMQSenderRule = require('./RabbitMQSenderRule')
const RabbitMQReceiverRule = require("./RabbitMQReceiverRule")
const RegisterTaintOnRabbitMQMessageRule = require('./RegisterTaintOnRabbitMQMessageRule')
const AxiosSinkRule = require("./AxiosSinkRule");
const AxiosSenderRule = require("./AxiosSenderRule");
const AxiosGetTagsFromFieldsRule = require("./AxiosGetTagsFromFieldsRule");
const ToBufferRule = require("./ToBufferRule");
const CloneHookValuesRule = require('./CloneHookValuesRule')
const Type = Object.freeze({
ARGS_TO_STRING: 'toString',
ARG_OBJECTS_TO_STRING: 'objectElementsToString',
THAT_TO_STRING: 'thatToString',
THAT_ELEMENTS_TO_STRING: 'thatElementsToString',
ADD_HOOK_VALUE_NAMES: 'addHookValueNames',
SKIP_ORIG_METHOD: 'skipOrigMethod',
WRAP_CALLBACK_REALPATH: 'wrapCallbackRealpath',
NO_OP: "noOp",
RABBITMQ_SENDER: "rabbitMQSender",
RABBITMQ_RECEIVER: "rabbitMQReceiver",
REGISTER_TAINT_ON_RABBITMQ_MESSAGE: "registerTaintOnRabbitMQMessage",
AXIOS_SINK: 'axiosSink',
AXIOS_SENDER: 'axiosSender',
AXIOS_GET_TAGS_FROM_FIELDS: 'axiosGetTagsFromFields',
TO_BUFFER: 'toBuffer',
CLONE_HOOKS_VALUES: 'cloneHookValues'
})
/**
* Rule Factory to create before rules read from hookObj(hook) by HookParser
*
* @function createRule
* @params ruleObj
* @returns BeforeRule
* @see HookParser.js
* @see BeforeRule.js
*/
function createRule (ruleObj) {
switch (ruleObj.type) {
case Type.ARGS_TO_STRING:
return new ArgsToStringRule(ruleObj)
case Type.ARG_OBJECTS_TO_STRING:
return new ArgObjectsToStringRule(ruleObj)
case Type.THAT_TO_STRING:
return new ThatToStringRule(ruleObj)
case Type.THAT_ELEMENTS_TO_STRING:
return new ThatElementsToStringRule(ruleObj)
case Type.ADD_HOOK_VALUE_NAMES:
return new AddHookValueNamesRule(ruleObj)
case Type.SKIP_ORIG_METHOD:
return new SkipOrigMethodRule(ruleObj)
case Type.WRAP_CALLBACK_REALPATH:
return new WrapCallbackRealpathRule(ruleObj)
case Type.NO_OP:
return new NoOpRule(ruleObj)
case Type.RABBITMQ_SENDER:
return new RabbitMQSenderRule(ruleObj)
case Type.RABBITMQ_RECEIVER:
return new RabbitMQReceiverRule(ruleObj)
case Type.REGISTER_TAINT_ON_RABBITMQ_MESSAGE:
return new RegisterTaintOnRabbitMQMessageRule(ruleObj)
case Type.AXIOS_SINK:
return new AxiosSinkRule(ruleObj)
case Type.AXIOS_SENDER:
return new AxiosSenderRule(ruleObj)
case Type.AXIOS_GET_TAGS_FROM_FIELDS:
return new AxiosGetTagsFromFieldsRule(ruleObj)
case Type.TO_BUFFER:
return new ToBufferRule(ruleObj)
case Type.CLONE_HOOKS_VALUES:
return new CloneHookValuesRule(ruleObj)
default:
throw new global.origError('unknown before rule type.')
}
}
module.exports.createRule = createRule
module.exports.Type = Type