File tree Expand file tree Collapse file tree 3 files changed +14
-12
lines changed
src/iTextSharp.LGPLv2.Core/iTextSharp/text Expand file tree Collapse file tree 3 files changed +14
-12
lines changed Original file line number Diff line number Diff line change @@ -67,7 +67,7 @@ public XfaForm(PdfReader reader)
6767 }
6868
6969 bout . Seek ( offset : 0 , SeekOrigin . Begin ) ;
70- using var xtr = XmlReader . Create ( bout ) ;
70+ using var xtr = XmlReader . Create ( bout , xml . ParserBase . SecureXmlReaderSettings ) ;
7171 _domDocument = new XmlDocument ( ) ;
7272 _domDocument . PreserveWhitespace = true ;
7373 _domDocument . Load ( xtr ) ;
Original file line number Diff line number Diff line change @@ -8,6 +8,16 @@ namespace iTextSharp.text.xml;
88/// </summary>
99public abstract class ParserBase
1010{
11+ /// <summary>
12+ /// Secure XML reader settings that prevent XXE attacks (CVE-2017-9096)
13+ /// by disabling DTD processing and external entity resolution.
14+ /// </summary>
15+ public static readonly XmlReaderSettings SecureXmlReaderSettings = new XmlReaderSettings
16+ {
17+ DtdProcessing = DtdProcessing . Prohibit ,
18+ XmlResolver = null
19+ } ;
20+
1121 /// <summary>
1222 /// This method gets called when characters are encountered.
1323 /// </summary>
@@ -34,11 +44,7 @@ public void Parse(XmlDocument xDoc)
3444 var xml = xDoc . OuterXml ;
3545 var stringReader = new StringReader ( xml ) ;
3646
37- var reader = XmlReader . Create ( stringReader , new XmlReaderSettings
38- {
39- DtdProcessing = DtdProcessing . Prohibit ,
40- XmlResolver = null
41- } ) ;
47+ var reader = XmlReader . Create ( stringReader , SecureXmlReaderSettings ) ;
4248 Parse ( reader ) ;
4349 }
4450
@@ -120,11 +126,7 @@ public void Parse(XmlReader reader)
120126 public void Parse ( string url )
121127 {
122128 var stringReader = new StringReader ( File . ReadAllText ( url ) ) ;
123- var reader = XmlReader . Create ( stringReader , new XmlReaderSettings
124- {
125- DtdProcessing = DtdProcessing . Prohibit ,
126- XmlResolver = null
127- } ) ;
129+ var reader = XmlReader . Create ( stringReader , SecureXmlReaderSettings ) ;
128130 Parse ( reader ) ;
129131 }
130132
Original file line number Diff line number Diff line change @@ -28,7 +28,7 @@ public XmpReader(byte[] bytes)
2828 using var bout = new MemoryStream ( ) ;
2929 bout . Write ( bytes , 0 , bytes . Length ) ;
3030 bout . Seek ( 0 , SeekOrigin . Begin ) ;
31- using var xtr = XmlReader . Create ( bout ) ;
31+ using var xtr = XmlReader . Create ( bout , ParserBase . SecureXmlReaderSettings ) ;
3232 _domDocument = new XmlDocument ( ) ;
3333 _domDocument . PreserveWhitespace = true ;
3434 _domDocument . Load ( xtr ) ;
You can’t perform that action at this time.
0 commit comments