Merge pull request from GHSA-r2hc-pmr7-4c9r
* Configured XML parsers to resist XXE attacks Signed-off-by: Kai Kreuzer <kai@openhab.org> * added fix for avmfritz Signed-off-by: Kai Kreuzer <kai@openhab.org> * added fix for sonos Signed-off-by: Kai Kreuzer <kai@openhab.org> * added fix for vitotronic and bosesoundtouch Signed-off-by: Kai Kreuzer <kai@openhab.org> * changed avmfritz to singleton pattern Signed-off-by: Kai Kreuzer <kai@openhab.org> * addressed roku binding Signed-off-by: Kai Kreuzer <kai@openhab.org> * address all uses of DocumentBuilderFactory Signed-off-by: Kai Kreuzer <kai@openhab.org> * fixed other occurrences in roku binding Signed-off-by: Kai Kreuzer <kai@openhab.org>
This commit is contained in:
@@ -78,6 +78,12 @@ public class DeviceTypeLoader {
|
||||
*/
|
||||
public void loadDeviceTypesXML(InputStream in) throws ParserConfigurationException, SAXException, IOException {
|
||||
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
|
||||
// see https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html
|
||||
dbFactory.setFeature("http://xml.org/sax/features/external-general-entities", false);
|
||||
dbFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
|
||||
dbFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
|
||||
dbFactory.setXIncludeAware(false);
|
||||
dbFactory.setExpandEntityReferences(false);
|
||||
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
|
||||
Document doc = dBuilder.parse(in);
|
||||
doc.getDocumentElement().normalize();
|
||||
|
||||
@@ -51,6 +51,12 @@ public class FeatureTemplateLoader {
|
||||
List<FeatureTemplate> features = new ArrayList<>();
|
||||
try {
|
||||
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
|
||||
// see https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html
|
||||
dbFactory.setFeature("http://xml.org/sax/features/external-general-entities", false);
|
||||
dbFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
|
||||
dbFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
|
||||
dbFactory.setXIncludeAware(false);
|
||||
dbFactory.setExpandEntityReferences(false);
|
||||
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
|
||||
// Parse it!
|
||||
Document doc = dBuilder.parse(input);
|
||||
|
||||
@@ -55,6 +55,12 @@ public class XMLMessageReader {
|
||||
Map<String, Msg> messageMap = new HashMap<>();
|
||||
try {
|
||||
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
|
||||
// see https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html
|
||||
dbFactory.setFeature("http://xml.org/sax/features/external-general-entities", false);
|
||||
dbFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
|
||||
dbFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
|
||||
dbFactory.setXIncludeAware(false);
|
||||
dbFactory.setExpandEntityReferences(false);
|
||||
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
|
||||
// Parse it!
|
||||
Document doc = dBuilder.parse(input);
|
||||
|
||||
Reference in New Issue
Block a user