33using System . IO ;
44using System . Linq ;
55using System . Security . Claims ;
6+ using System . Web ;
67using Cervantes . Contracts ;
78using Cervantes . CORE ;
89using Cervantes . CORE . Entities ;
910using CsvHelper ;
1011using CsvHelper . Configuration ;
12+ using Ganss . Xss ;
1113
1214namespace Cervantes . IFR . Parsers . CSV ;
1315
@@ -31,6 +33,9 @@ public void Parse(Guid? project, string user, string path)
3133 {
3234 Delimiter = ";"
3335 } ;
36+ var sanitizer = new HtmlSanitizer ( ) ;
37+ sanitizer . AllowedSchemes . Add ( "data" ) ;
38+
3439 using ( var reader = new StreamReader ( path ) )
3540 using ( var csv = new CsvReader ( reader , config ) )
3641 {
@@ -44,28 +49,28 @@ public void Parse(Guid? project, string user, string path)
4449 foreach ( var vul in records )
4550 {
4651 Vuln vuln = new Vuln ( ) ;
47- vuln . Name = vul . Name == "" ? "No Name" : vul . Name ;
52+ vuln . Name = vul . Name == "" ? "No Name" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . Name ) ) ;
4853
4954 vuln . Template = vul . Template . HasValue && vul . Template . Value ;
50- vuln . cve = vul . CVE == "" ? "None" : vul . CVE ;
51- vuln . Description = vul . Description == "" ? "No Data" : vul . Description ;
52- vuln . Impact = vul . Impact == "" ? "No Data" : vul . Impact ;
55+ vuln . cve = vul . CVE == "" ? "None" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . CVE ) ) ;
56+ vuln . Description = vul . Description == "" ? "No Data" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . Description ) ) ;
57+ vuln . Impact = vul . Impact == "" ? "No Data" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . Impact ) ) ;
5358 vuln . Risk = vul . Risk ?? VulnRisk . Info ;
5459 vuln . Status = vul . Status ?? VulnStatus . Open ;
5560 vuln . CreatedDate = DateTime . Now . ToUniversalTime ( ) ;
5661 vuln . JiraCreated = false ;
57- vuln . Remediation = vul . Remediation == "" ? "No Data" : vul . Remediation ;
62+ vuln . Remediation = vul . Remediation == "" ? "No Data" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . Remediation ) ) ;
5863 vuln . RemediationPriority = vul . RemediationPriority ?? RemediationPriority . Low ;
5964 vuln . RemediationComplexity = vul . RemediationComplexity ?? RemediationComplexity . Low ;
60- vuln . OWASPRisk = vul . OwaspRisk == "" ? "No Data" : vul . OwaspRisk ;
61- vuln . OWASPImpact = vul . OwaspImpact == "" ? "No Data" : vul . OwaspImpact ;
62- vuln . OWASPLikehood = vul . OwaspLikehood == "" ? "No Data" : vul . OwaspLikehood ;
63- vuln . OWASPVector = vul . OwaspVector == "" ? "No Data" : vul . OwaspVector ;
65+ vuln . OWASPRisk = vul . OwaspRisk == "" ? "No Data" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . OwaspRisk ) ) ;
66+ vuln . OWASPImpact = vul . OwaspImpact == "" ? "No Data" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . OwaspImpact ) ) ;
67+ vuln . OWASPLikehood = vul . OwaspLikehood == "" ? "No Data" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . OwaspLikehood ) ) ;
68+ vuln . OWASPVector = vul . OwaspVector == "" ? "No Data" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . OwaspVector ) ) ;
6469 vuln . ProjectId = project ;
65- vuln . ProofOfConcept = vul . Poc == "" ? "No Data" : vul . Poc ;
70+ vuln . ProofOfConcept = vul . Poc == "" ? "No Data" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . Poc ) ) ;
6671 vuln . UserId = user ;
6772 vuln . CVSS3 = vul . CVSS3 ?? 0 ;
68- vuln . CVSSVector = vul . CVSSVector == "" ? "No Data" : vul . CVSSVector ;
73+ vuln . CVSSVector = vul . CVSSVector == "" ? "No Data" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . CVSSVector ) ) ;
6974 var cat = vulnCategoryManager . GetByName ( vul . VulnCategory ) ;
7075 if ( cat != null )
7176 {
@@ -86,28 +91,28 @@ public void Parse(Guid? project, string user, string path)
8691 foreach ( var vul in records )
8792 {
8893 Vuln vuln = new Vuln ( ) ;
89- vuln . Name = vul . Name == "" ? "No Name" : vul . Name ;
94+ vuln . Name = vul . Name == "" ? "No Name" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . Name ) ) ;
9095
9196 vuln . Template = vul . Template . HasValue && vul . Template . Value ;
92- vuln . cve = vul . CVE == "" ? "None" : vul . CVE ;
93- vuln . Description = vul . Description == "" ? "No Data" : vul . Description ;
94- vuln . Impact = vul . Impact == "" ? "No Data" : vul . Impact ;
97+ vuln . cve = vul . CVE == "" ? "None" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . CVE ) ) ;
98+ vuln . Description = vul . Description == "" ? "No Data" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . Description ) ) ;
99+ vuln . Impact = vul . Impact == "" ? "No Data" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . Impact ) ) ;
95100 vuln . Risk = vul . Risk ?? VulnRisk . Info ;
96101 vuln . Status = vul . Status ?? VulnStatus . Open ;
97102 vuln . CreatedDate = DateTime . Now . ToUniversalTime ( ) ;
98103 vuln . JiraCreated = false ;
99- vuln . Remediation = vul . Remediation == "" ? "No Data" : vul . Remediation ;
104+ vuln . Remediation = vul . Remediation == "" ? "No Data" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . Remediation ) ) ;
100105 vuln . RemediationPriority = vul . RemediationPriority ?? RemediationPriority . Low ;
101106 vuln . RemediationComplexity = vul . RemediationComplexity ?? RemediationComplexity . Low ;
102- vuln . OWASPRisk = vul . OwaspRisk == "" ? "No Data" : vul . OwaspRisk ;
103- vuln . OWASPImpact = vul . OwaspImpact == "" ? "No Data" : vul . OwaspImpact ;
104- vuln . OWASPLikehood = vul . OwaspLikehood == "" ? "No Data" : vul . OwaspLikehood ;
105- vuln . OWASPVector = vul . OwaspVector == "" ? "No Data" : vul . OwaspVector ;
107+ vuln . OWASPRisk = vul . OwaspRisk == "" ? "No Data" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . OwaspRisk ) ) ;
108+ vuln . OWASPImpact = vul . OwaspImpact == "" ? "No Data" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . OwaspImpact ) ) ;
109+ vuln . OWASPLikehood = vul . OwaspLikehood == "" ? "No Data" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . OwaspLikehood ) ) ;
110+ vuln . OWASPVector = vul . OwaspVector == "" ? "No Data" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . OwaspVector ) ) ;
106111 vuln . ProjectId = null ;
107112 vuln . ProofOfConcept = vul . Poc == "" ? "No Data" : vul . Poc ;
108113 vuln . UserId = user ;
109114 vuln . CVSS3 = vul . CVSS3 ?? 0 ;
110- vuln . CVSSVector = vul . CVSSVector == "" ? "No Data" : vul . CVSSVector ;
115+ vuln . CVSSVector = vul . CVSSVector == "" ? "No Data" : sanitizer . Sanitize ( HttpUtility . HtmlDecode ( vul . CVSSVector ) ) ;
111116 var cat = vulnCategoryManager . GetByName ( vul . VulnCategory ) ;
112117 if ( cat != null )
113118 {
0 commit comments