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 リストによると、これは「ソフトウェアが、意図した制御範囲外のドキュメントに解決される URI を持つ XML エンティティを含む可能性のある XML ドキュメントを処理し、製品が誤ったドキュメントを出力に埋め込む」ことを意味します。

コードを修正するために何をしなければならないのかわかりません。

4

0 に答える 0