рдИрд╡рд┐рд▓ рдкрд╛рд░реНрд╕рд▓ рднреЗрджреНрдпрддрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

рдкрд░рд┐рдЪрдп


рдЕрдкреНрд░реИрд▓ рдХреЗ рдордзреНрдп рдореЗрдВ, рд╣рдордиреЗ Android.InfectionAds.1 рдЯреНрд░реЛрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдорд╛рдЪрд╛рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ Android рдореЗрдВ рдХрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рдпрд╛ред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ, CVE-2017-13156 (рдЬрд┐рд╕реЗ рдЬрд╛рдиреВрд╕ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ), рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдБрдЪрд╛рдП рдмрд┐рдирд╛ рдПрдкреАрдХреЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рд╣реИ CVE-2017-13315ред рдпрд╣ рдЯреНрд░реЛрдЬрди рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдФрд░ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред Android.InfectionAds.1 рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╣рдорд╛рд░реЗ рд╡рд╛рдпрд░рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ; рдЬрдм рд╣рдо рдпрд╣рд╛рдВ рд╣реИрдВ рддреЛ рд╣рдо CVE-2017-13315 рднреЗрджреНрдпрддрд╛ рдкрд░ рд╕реНрдкрд░реНрд╢ рдХрд░реЗрдВрдЧреЗ рдФрд░ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред

CVE-2017-13315 рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рд╕рдореВрд╣ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ EvilParcel рдХрд░рд╛рд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рдПрдВрдбреНрд░реЙрдЗрдб рд╕рд┐рд╕реНрдЯрдо рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рдХреЗ рджреМрд░рд╛рди рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддреА рд╣реИрдВред рдореИрд▓рд╡реЗрдпрд░ рдЬреЛ рдПрд╡рд┐рд▓рдкреИрд░рд╕реЗрд▓ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЙрдЪреНрдЪ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддреЗ рд╣реИрдВ:

  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдкреБрд╖реНрдЯрд┐ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рдЕрдиреБрдорддрд┐ рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рдФрд░ рдирд┐рдХрд╛рд▓рдирд╛;
  • рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЛ рд╕рдВрдХреНрд░рдорд┐рдд рдХрд░рдирд╛ рдФрд░ рдЕрдиреНрдп рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╕рдВрдХреНрд░рдорд┐рдд рдкреНрд░рддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪреНрдЫ рдореВрд▓ рдХреЛ рдмрджрд▓рдирд╛;
  • Android рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд▓реЙрдХ рд╕реНрдХреНрд░реАрди рдкрд┐рди рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ред

рдЕрдм рддрдХ, рд╣рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА 7 рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ:
  • рдЕрдХреНрдЯреВрдмрд░ 2017 рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд CVE-2017-0806 (рдЧреЗрдЯрдХреАрдкрд░ рд░рд┐рдкреНрд╕ рд╡рд░реНрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐);
  • CVE-2017-13286 (рдЕрдкреНрд░реИрд▓ 2018 рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЖрдЙрдЯрдкреБрдЯрдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд░реНрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐;
  • рдЕрдкреНрд░реИрд▓ 2018 рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд CVE-2017-13287 (VerifyCredentialResponse рд╡рд░реНрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐);
  • рдЕрдкреНрд░реИрд▓ 2018 рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд CVE-2017-13288 (PeriodicAdvertizingReport рд╡рд░реНрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐);
  • рдЕрдкреНрд░реИрд▓ 2018 рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд CVE-2017-13289 (ParcelableRttResults рд╡рд░реНрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐);
  • рдордИ 2018 рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд CVE-2017-13311 (SparseMappingTable рд╡рд░реНрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐);
  • CVE-2017-13315 (DcParamObject рд╡рд░реНрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐), рдордИ 2018 рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рддред

рдпреЗ рд╕рднреА рдордИ 2018 (рдпрд╛ рдмрд╛рдж рдореЗрдВ) рд╕реБрд░рдХреНрд╖рд╛ рдЕрдкрдбреЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдПрдВрдбреНрд░реЙрдЗрдб 5.0 - 8.1 рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЦрддрд░рд╛ рдкреИрджрд╛ рдХрд░рддреЗ рд╣реИрдВред

EvilParcel рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ


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

рдПрдХ рдЗрд░рд╛рджреЗ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдмрдВрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╛рд░реНрд╕рд▓ рдореЗрдВ рд▓рд┐рдкрдЯреЗ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд (рдХреНрд░рдордмрджреНрдз) рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХреНрд░рдордмрджреНрдз рдмрдВрдбрд▓ рд╕реЗ рдХреБрдВрдЬрд┐рдпреЛрдВ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ deserialized рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдмрдВрдбрд▓ рдореЗрдВ, рдХреБрдВрдЬреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рдФрд░ рдореВрд▓реНрдп рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдпрд╛ рддрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдкрд╛рд░реНрд╕рд▓реЗрдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдмрдВрдбрд▓ рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкрд╛рд░реНрд╕рд▓реЗрдмрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреНрд░рдордмрджреНрдз рдФрд░ рдбрд┐рд╕реНрдХреНрд░рд┐рдЕрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╛рдЗрдЯ рдЯреВ рдкреЙрдкрд░рд╕реЗрд▓ () рдФрд░ рдХреНрд░рд┐рдПрдЯрдлреНрд░реЙрдо рдкрд╛рд░реНрд╕рд▓ () рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЕрдкрдиреА рдмрд╛рдд рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдХреНрд░рдордмрджреНрдз рдмрдВрдбрд▓ рдмрдирд╛рдПрдВред рд╣рдо рдПрдХ рдХреЛрдб рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдмрдВрдбрд▓ рдореЗрдВ рддреАрди рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░рддрд╛ рд╣реИ:


рдЪрд┐рддреНрд░рд╛ 1. рдПрдХ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдмрдВрдбрд▓ рд╡рд╕реНрддреБ рдХреА рд╕рдВрд░рдЪрдирд╛

рдмрдВрдбрд▓ рдХреНрд░рдорд╛рдВрдХрди рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:

  • рд╕рднреА рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ;
  • рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░ рдкреНрд░рддреНрдпреЗрдХ рдореВрд▓реНрдп рд╕реЗ рдкрд╣рд▓реЗ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП 13, рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд▓рд┐рдП 1, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП 0, рдЖрджрд┐);
  • рдЪрд░ рд▓рдВрдмрд╛рдИ рдбреЗрдЯрд╛ рдЖрдХрд╛рд░ рдбреЗрдЯрд╛ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд▓рдВрдмрд╛рдИ, рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛);
  • рд╕рднреА рдореВрд▓реНрдп 4-рдмрд╛рдЗрдЯреНрд╕ рд╣реИрдВред


рд╕рднреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрдВрдбрд▓ рдореЗрдВ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреНрд░рдордмрджреНрдз рдмрдВрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХрд┐рд╕реА рднреА рдХреБрдВрдЬреА рдпрд╛ рдореВрд▓реНрдп рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╕рдордп, рдмрд╛рдж рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ deserializes, рд╕рд╛рде рд╣реА рд╕рднреА рдирд┐рд╣рд┐рдд рдкрд╛рд░реНрд╕рд▓реЗрдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИред

рддреЛ, рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ? рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ Parcelable рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рд╕рд┐рд╕реНрдЯрдо рд╡рд░реНрдЧреЛрдВ рдореЗрдВ createFromParcel () рдФрд░ writeToParcel () рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдЗрди рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ, CreateFromParcel () рдореЗрдВ рдкрдврд╝реА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ writeToParcel () рдореЗрдВ рд▓рд┐рдЦреЗ рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрдЧреАред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╡рд░реНрдЧ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдПрдХ рдмрдВрдбрд▓ рдХреЗ рдЕрдВрджрд░ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдмрдВрдбрд▓ рдХреЗ рдЕрдВрджрд░ рдХреА рд╡рд╕реНрддреБ рд╕реАрдорд╛рдПрдВ рдкреБрдирд░реНрдЬреАрд╡рди рдХреЗ рдмрд╛рдж рдмрджрд▓ рдЬрд╛рдПрдВрдЧреАред рдпрд╣ рдПрдХ EvilParcel рднреЗрджреНрдпрддрд╛ рдХреЗ рд╢реЛрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдмрдирд╛рддрд╛ рд╣реИред

рдЖрдЗрдП рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реИ:

class Demo implements Parcelable { byte[] data; public Demo() { this.data = new byte[0]; } protected Demo(Parcel in) { int length = in.readInt(); data = new byte[length]; if (length > 0) { in.readByteArray(data); } } public static final Creator<Demo> CREATOR = new Creator<Demo>() { @Override public Demo createFromParcel(Parcel in) { return new Demo(in); } }; @Override public void writeToParcel(Parcel parcel, int i) { parcel.writeInt(data.length); parcel.writeByteArray(data); } } 

рдпрджрд┐ рдбреЗрдЯрд╛ рдРрд░реЗ рдХрд╛ рдЖрдХрд╛рд░ 0 рд╣реИ, рддреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рдПрдХ int (4 рдмрд╛рдЗрдЯреНрд╕) createFromParcel () рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рджреЛ int (8 рдмрд╛рдЗрдЯреНрд╕) writeToParcel () рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рдПрдВрдЧреЗред рдкрд╣рд▓рд╛ рдЗрдВрдЯ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рджреВрд╕рд░рд╛ рдЗрдВрдЯ рд▓рд┐рдЦрдиреЗ рдкрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдХреЙрд▓рд┐рдВрдЧрдмрд╛рдпрд░реЗ (), рдХреНрдпреЛрдВрдХрд┐ рд╕рд░рдгреА рд▓рдВрдмрд╛рдИ рд╣рдореЗрд╢рд╛ рдкрд╛рд░реНрд╕рд▓ рдореЗрдВ рд╕рд░рдгреА рд╕реЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИ (рдЪрд┐рддреНрд░ 1 рджреЗрдЦреЗрдВ)ред

рд╕реНрдерд┐рддрд┐ рдЬрд╣рд╛рдВ рдбреЗрдЯрд╛ рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ 0 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдмрд╣реБрдд рджреБрд░реНрд▓рдн рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬрдм рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддрдм рднреА рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рдХреНрд░рдордмрджреНрдз рд╡рд╕реНрддреБ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдбреЗрдореЛ рдСрдмреНрдЬреЗрдХреНрдЯ)ред рдЗрд╕рд▓рд┐рдП, рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХрд┐рд╕реА рдХрд╛ рдзреНрдпрд╛рди рдирд╣реАрдВ рдЬрд╛рддреА рд╣реИрдВред

рдЕрдм рд╣рдо рдмрдВрдбрд▓ рдореЗрдВ рд╢реВрдиреНрдп рд╕рд░рдгреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рдбреЗрдореЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ:


рдЪрд┐рддреНрд░рд╛ 2. рдмрдВрдбрд▓ рдореЗрдВ рд╢реВрдиреНрдп-рд▓рдВрдмрд╛рдИ рд╡рд╛рд▓реА рдбреЗрдореЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ

рд╣рдо рд╡рд╕реНрддреБ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ:


рдЪрд┐рддреНрд░ 3. рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рдмрд╛рдж рдмрдВрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ

рдЖрдЗрдП рдЕрдм рдЗрд╕реЗ рдбрд┐рд╕реЗрд░реНрдмрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:


рдЪрд┐рддреНрд░ 4. рдбрд┐рд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬреЗрд╢рди рдХреЗ рдмрд╛рдж рдмрдВрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ

рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ? рдЖрдЗрдП рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдкрд╛рд░реНрд╕рд▓ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдкрд░:


рдЪрд┐рддреНрд░рд╛ 5. рдмрдВрдбрд▓ deserialization рдХреЗ рдмрд╛рдж рдкрд╛рд░реНрд╕рд▓ рд╕рдВрд░рдЪрдирд╛

рдЖрдВрдХрдбрд╝реЗ рек рдФрд░ рел рдореЗрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рджреЛ рдЗрдВрдЯ рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдЗрдВрдЯ рдХреЛ рдбрд┐рд╕реЗрдВрдЯреНрд░рд▓рд╛рдЗрдЬреЗрд╢рди рдХреЗ рджреМрд░рд╛рди createFromParcel рдореЗрдердб рдореЗрдВ рдкрдврд╝рд╛ рдЧрдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдмрдВрдбрд▓ рд╕реЗ рд╕рднреА рдмрд╛рдж рдХреЗ рдорд╛рди рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкрдврд╝реЗ рдЧрдП рдереЗред 0x60 рдкрд░ 0x0 рдорд╛рди рдЕрдЧрд▓реА рдХреБрдВрдЬреА рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рд╛ рдЧрдпрд╛ рдерд╛ред 0x64 рдкрд░ 0x1 рдорд╛рди рдПрдХ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рд╛ рдЧрдпрд╛ рдерд╛ред 0x68 рдкрд░ 0x31 рдХрд╛ рдорд╛рди рдорд╛рди рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдкрд╛рд░реНрд╕рд▓ рдХрд╛ рдкреНрд░рдХрд╛рд░ 0x31 рдХреЗ рд╕рд╛рде рдХреЛрдИ рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП readFromParcel () рд╢реНрд░рдорд╕рд╛рдзреНрдп рд░реВрдк рд╕реЗ рдЕрдкрд╡рд╛рдж рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рднреЗрджреНрдпрддрд╛ рдмрди рд╕рдХрддрд╛ рд╣реИ? рдЪрд▓реЛ рджреЗрдЦрддреЗ рд╣реИрдВ! рдкрд╛рд░реНрд╕реЗрдмрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреНрд▓рд╛рд╕реЗрд╕ рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рддреНрд░реБрдЯрд┐, рдЙрди рдмрдВрдбрд▓реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддреА рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рд░-рдмрд╛рд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдбрд┐рд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬреЗрд╢рди рдХреЗ рджреМрд░рд╛рди рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВрдЧреЗ:

 Parcel data = Parcel.obtain(); data.writeInt(3); // 3 entries data.writeString("vuln_class"); data.writeInt(4); // value is Parcelable data.writeString("com.drweb.testbundlemismatch.Demo"); data.writeInt(0); // data.length data.writeInt(1); // key length -> key value data.writeInt(6); // key value -> value is long data.writeInt(0xD); // value is bytearray -> low(long) data.writeInt(-1); // bytearray length dummy -> high(long) int startPos = data.dataPosition(); data.writeString("hidden"); // bytearray data -> hidden key data.writeInt(0); // value is string data.writeString("Hi there"); // hidden value int endPos = data.dataPosition(); int triggerLen = endPos - startPos; data.setDataPosition(startPos - 4); data.writeInt(triggerLen); // overwrite dummy value with the real value data.setDataPosition(endPos); data.writeString("A padding"); data.writeInt(0); // value is string data.writeString("to match pair count"); int length = data.dataSize(); Parcel bndl = Parcel.obtain(); bndl.writeInt(length); bndl.writeInt(0x4C444E42); // bundle magic bndl.appendFrom(data, 0, length); bndl.setDataPosition(0); 

рдпрд╣ рдХреЛрдб рдПрдХ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдмрдВрдбрд▓ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдХрдордЬреЛрд░ рд╡рд░реНрдЧ рд╣реЛрддрд╛ рд╣реИред рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ:


рдЪрд┐рддреНрд░рд╛ 6. рдПрдХ рдХрдордЬреЛрд░ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдВрдбрд▓ рдмрдирд╛рдирд╛

рдкрд╣рд▓реЗ deserialization рдХреЗ рдмрд╛рдж, рдЗрд╕ рдмрдВрдбрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╣реЛрдВрдЧреА:


рдЪрд┐рддреНрд░рд╛ 7. рдПрдХ рдХрдордЬреЛрд░ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдВрдбрд▓ рдХреЗ deserialization рдХреЗ рдмрд╛рдж

рдЕрдм рд╣рдо рдмрдВрдбрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реАрд░рд┐рдпрд▓ рдХрд░реЗрдВрдЧреЗ, рдлрд┐рд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рджреЗрдВрдЧреЗ рдФрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рджреЗрдЦреЗрдВрдЧреЗ:


рдЪрд┐рддреНрд░ 8. рдХрдордЬреЛрд░ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдВрдбрд▓ рдХреЗ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдФрд░ deserializing рдХрд╛ рдкрд░рд┐рдгрд╛рдо

рд╣рдо рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ? рдмрдВрдбрд▓ рдореЗрдВ рдЕрдм рдЫрд┐рдкреА рд╣реБрдИ рдХреБрдВрдЬреА (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди "рд╣рд╛рдп рд╡рд╣рд╛рдБ!") рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдереАред рдЖрдЗрдП рдЗрд╕ рдмрдВрдбрд▓ рдХреЗ рдкрд╛рд░реНрд╕рд▓ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рджреЗрдЦреЗрдВ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реБрдЖ:


рдЪрд┐рддреНрд░ 9. рджреЛ рдХреНрд░рдорд╛рдВрдХрди рдФрд░ рдбреАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЪрдХреНрд░реЛрдВ рдХреЗ рдмрд╛рдж рдПрдХ рдХрдордЬреЛрд░ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдВрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдкрд╛рд░реНрд╕рд▓ рд╕рдВрд░рдЪрдирд╛

рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо EvilParcel рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рдкреВрд░реЗ рдмрд┐рдВрджреБ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдмрдВрдбрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдХрдордЬреЛрд░ рд╡рд░реНрдЧ рд╣реЛрдЧрд╛ред рдЗрд╕ рд╡рд░реНрдЧ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдЗрд╕ рдмрдВрдбрд▓ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреА рдирд┐рдпреБрдХреНрддрд┐ рдХреА рдЕрдиреБрдорддрд┐ рд╣реЛрдЧреА; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЖрд╢рдп, рдЬреЛ рдХреЗрд╡рд▓ рджреВрд╕рд░реЗ рдирд┐рд░реНрд╡рд┐рд╡рд╛рджреАрдХрд░рдг рдХреЗ рдмрд╛рдж рдмрдВрдбрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдпрд╣ рдУрдПрд╕ рд╕реБрд░рдХреНрд╖рд╛ рддрдВрддреНрд░ рд╕реЗ рдПрдХ рдЗрд░рд╛рджреЗ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рд╢реЛрд╖рдг рдИрд╡рд┐рд▓рдкрд░реНрд╕реЗрд▓


Android.InfectionAds.1 рдиреЗ рдЙрдкрдХрд░рдг рд╕реНрд╡рд╛рдорд┐рдпреЛрдВ рд╕реЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП CVE-2017-13315 рдХрд╛ рд╢реЛрд╖рдг рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдХреИрд╕реЗ?

2013 рдореЗрдВ, 7699048 , рдЬрд┐рд╕реЗ рд▓реЙрдиреНрдЪ рдПрдиреАрд╡реЗрдпрд░ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреА рдЦреЛрдЬ рдХреА рдЧрдИ рдереАред рдЗрд╕рдиреЗ рддреГрддреАрдп-рдкрдХреНрд╖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рд╕рд┐рд╕реНрдЯрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рдордирдорд╛рдиреА рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рдХрд╛рд░реНрд░рд╡рд╛рдИ рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ:


рдЪрд┐рддреНрд░рд╛ 10. рддреНрд░реБрдЯрд┐ 7699048 рдХрд╛ рд╕рдВрдЪрд╛рд▓рди

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

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

 if (result != null && (intent = result.getParcelable(AccountManager.KEY_INTENT)) != null) { /* * The Authenticator API allows third party authenticators to * supply arbitrary intents to other apps that they can run, * this can be very bad when those apps are in the system like * the System Settings. */ int authenticatorUid = Binder.getCallingUid(); long bid = Binder.clearCallingIdentity(); try { PackageManager pm = mContext.getPackageManager(); ResolveInfo resolveInfo = pm.resolveActivityAsUser(intent, 0, mAccounts.userId); int targetUid = resolveInfo.activityInfo.applicationInfo.uid; if (PackageManager.SIGNATURE_MATCH != pm.checkSignatures(authenticatorUid, targetUid)) { throw new SecurityException( "Activity to be started with KEY_INTENT must " + "share Authenticator's signatures"); } } finally { Binder.restoreCallingIdentity(bid); } } 

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╕рд┐рджреНрдз рднреЗрджреНрдпрддрд╛, EvilParcel CVE-2017-13315, рдПрдХ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ! рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓реЙрдиреНрдЪ рдПрдиреАрд╡реЗрдпрд░ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рд┐рд╕реНрдЯрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реИ, рддреЛ рдмрдВрдбрд▓ рдХреЛ IAccountManagerResponse.onResult () рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, onResult () рдХреЛ IPC рддрдВрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрдВрдбрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред OnResult () рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрддрд╛ рд╣реИ:

 /** Handles the responses from the AccountManager */ private class Response extends IAccountManagerResponse.Stub { public void onResult(Bundle bundle) { Intent intent = bundle.getParcelable(KEY_INTENT); if (intent != null && mActivity != null) { // since the user provided an Activity we will silently start intents // that we see mActivity.startActivity(intent); // leave the Future running to wait for the real response to this request } //<.....> } //<.....> } 

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

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

рдЖрдк Android рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ Dr.Web Security Space рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ EvilParcel рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рд▓реЗрдЦрд╛ рдкрд░реАрдХреНрд╖рдХ рдкрддрд╛ рд▓рдЧрд╛рдП рдЧрдП рдореБрджреНрджреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░реЗрдЧрд╛ред

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


All Articles