XMLの外部リソース解決が行われるとは限らない

昨日の話題に対して逆説となるが、XMLドキュメントタイプを出力するのであっても、DTDリソースを解決しようとしない場合もある。それは、以下のように、XmlTextWriterでXMLドキュメントをストリーム等に直接出力するケースである。

XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.Default;
settings.Indent = true;
settings.OmitXmlDeclaration = false;
using (XmlTextWriter writer = new XmlTextWriter(stream, encoding))
{
    writer.Formatting = Formatting.Indented;
    writer.Indentation = 2;
    writer.WriteStartDocument();
    //DOCTYPE宣言の出力
    writer.WriteDocType("hoge", null, "hoge.dtd", null);
    //ルートエレメントの出力
    writer.WriteStartElement("root");
    writer.WriteEndElement();
    writer.WriteEndDocument();
}

これは昨日のコードと同様に、以下のようなXMLを出力するが

<?xml version="1.0" encoding="shift_jis"?>
<!DOCTYPE hoge SYSTEM "hoge.dtd">
<root></root>

しかし、今度はDTDの存在検査は実行されない。
XmlTextWriter.WriteDocType メソッドに関しては、MSDN及びHelpには以下のように注釈が付いている。

XmlTextWriter は、WriteDocType メソッドに渡されるデータの検証を行いません。このメソッドに任意のデータを渡さないでください。

DOCTYPE宣言がらみの脆弱性って、なにかあったっけか。