3

我们对一些旧的遗留应用程序进行了 Veracode 安全审计,发现我们容易受到外部实体 (XXE) 攻击。我已经解决了大部分问题,但我遇到了一些我不知道如何处理的代码,我希望这里有人能给我一些指导。以下是相关代码:

...
Dim authTicket As FormsAuthenticationTicket
authTicket = FormsAuthentication.Decrypt(authCookie.Value)
Dim xml As String = authTicket.UserData
Dim authObj As Object = Nothing
Dim serializer As System.Xml.Serialization.XmlSerializer = Nothing

If xml.Contains("<CensusLoginInfo") Then
   serializer = New System.Xml.Serialization.XmlSerializer(GetType(MoHWoRXCensus_Business.CensusLoginInfo))
End If
If serializer IsNot Nothing Then
    authObj = serializer.Deserialize(New IO.StringReader(xml))
    rl.Add("Provider") 'mark this user as a provider since they've logged in
End If
....

问题在于这段代码:

serializer = New System.Xml.Serialization.XmlSerializer(GetType(MoHWoRXCensus_Business.CensusLoginInfo))

根据 Veracode 的说法,上述代码段的问题是“XML 外部实体引用 ('XXE') 的限制不当”。根据 CWE 列表,这意味着“该软件处理的 XML 文档可以包含 XML 实体,其 URI 解析为预期控制范围之外的文档,导致产品在其输出中嵌入不正确的文档。”

我不知道我与修复它的代码有什么关系。

4

0 回答 0