Exemplo n.º 1
0
        private bool MonotonicChange(CFGTaintInfo oldResult, CFGTaintInfo newResult)
        {
            if (oldResult == null)
            {
                return(true);
            }

            return(!oldResult.Equals(newResult));
        }
Exemplo n.º 2
0
        public void Initialize(CFGBlock cfgBlock)
        {
            var taintInfo = CFGTaintInfo.Default;

            if (cfgBlock.IsRoot)
            {
                var varStorage = ImmutableDictionary <EdgeType, ImmutableVariableStorage> .Empty.Add(EdgeType.Normal, initialTaint);

                taintInfo = new CFGTaintInfo(initialTaint, varStorage);
            }
            _taints.Add(cfgBlock, taintInfo);
        }
Exemplo n.º 3
0
 private void AnalyzeEcho(CFGBlock block, CFGTaintInfo taintInfo)
 {
     //var xssTaintedVars = taintInfo.In.Where(info => info.Value.XssTaint.TaintTags.Contains(XSSTaint.XSS_ALL))
     //                                 .Select(info => info.Key);
     //foreach (var taintedVar in xssTaintedVars)
     //{
     //    if (block.AstEntryNode.InnerText.Contains(taintedVar))
     //    {
     //        vulnerabilityReporter.ReportVulnerability(block, "XSS");
     //    }
     //}
 }
Exemplo n.º 4
0
        public void AnalyzeSink(CFGBlock target, CFGTaintInfo taintInfo)
        {
            switch (target.AstEntryNode.LocalName)
            {
            case AstConstants.Nodes.Stmt_Echo:
                AnalyzeEcho(target, taintInfo);
                break;

            case AstConstants.Nodes.Expr_Print:
                break;

            default:
                break;
            }
        }