
рдЗрд╕ рдЖрд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ, рд╣рдо рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рдж рдореЗрдВ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд╕рд╛рде, рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдПрдЬ рдореЗрдВ рдПрдХ рднреЗрджреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЛрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдпрджрд┐ рдЖрдк рдпрд╣ рдЬрд╛рдирдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреИрд╕реА рджрд┐рдЦрддреА рд╣реИ, рддреЛ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!
рдкрд░рд┐рдЪрдп
рдореЙрдиреНрдЯреНрд░рд┐рдпрд▓ рдореЗрдВ рдирд╡реАрдирддрдо Pwn2Own 2019
рдореЗрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреА рд╢реНрд░реЗрдгреА рдореЗрдВ, Microsoft Edge
рдХреЛ рд╣реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЛрд╖рдг рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рджреЛ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рд░реЗрдВрдбрд░рд░ рдореЗрдВ double free
рдФрд░ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рднреЗрджреНрдпрддрд╛ред рдЗрди рджреЛ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдмрдВрдзрд┐рдд CVE
: CVE-2019-0940
рдФрд░ CVE-2019-0938
ред рдЖрдк рдмреНрд▓реЙрдЧ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ: Pwn2Own 2019: Microsoft рдПрдЬ рд░реЗрдВрдбрд░рд░ рд╢реЛрд╖рдг (CVE-2019-0940)ред рднрд╛рдЧ 1 рдФрд░ Pwn2Own 2019: рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдПрдЬрд╝ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдПрд╕реНрдХреЗрдк (CVE-2019-0938)ред рднрд╛рдЧ реи
рд╣рдорд╛рд░реЗ рд▓реЗрдЦ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░рдирд╛рдореЗ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП Windows 10
рдкрд░ Microsoft Edge
рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ CVE-2017-0240
рдФрд░ CVE-2016-3309
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рд╕рдордп рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдорддрднреЗрджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдпрджрд┐ Pwn2Own
рдкрд░ Pwn2Own
рдЧрдП рд╢реЛрд╖рдг рдиреЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд░реНрдХрд┐рдХ рднреЗрджреНрдпрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП Windows 10
рдХрд░реНрдиреЗрд▓ рдореЗрдВ рднреЗрджреНрдпрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред Microsoft
рд╢реЛ рд╕реЗ рдкреИрдЪ рдХреЗ рд░реВрдк рдореЗрдВ, рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрдордЬреЛрд░рд┐рдпрд╛рдВ рд╣реИрдВред рдирддреАрдЬрддрди, рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рдРрд╕реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдФрд░ рдХрдВрдкрдирд┐рдпреЛрдВ рдореЗрдВ рдЖрдИрдПрд╕ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рд╕реНрд░реЛрдд рдбреЗрдЯрд╛
рдпрд╣ рдЖрд▓реЗрдЦ Microsoft Edge
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП 1-рджрд┐рд╡рд╕реАрдп рд╢реЛрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдЧрд╛ред CVE-2017-0240
рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдСрдкрд░реЗрд╢рди рдХрд╛ рдкрд╣рд▓рд╛ рдЪрд░рдг рд╕реНрд░реЛрдд [1] рд╕реЗ рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣реЛрдЧрд╛, рд╣рдо рдПрдХ arbitrary address read/write
рдЖрджрд┐рдо, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рддрдХрдиреАрдХреЛрдВ рд╕реЗ рднреА рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдВрдЧреЗ рдЬреЛ рдРрд╕реА рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЖрдкрдХреЛ pwn.js
рдЯреВрд▓ рд╕реЗ pwn.js
, рдЬреЛ рдЖрдкрдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдордирдорд╛рдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛, рдФрд░ рдЙрдиреНрд╣реЗрдВ mitigations
рд╡рд┐рднрд┐рдиреНрди mitigations
рдФрд░ рддрд░реАрдХреЛрдВ рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдЧрд╛ред рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ, рд╡рд┐рдВрдбреЛрдЬрд╝ CVE-2016-3309
рдХрд░реНрдиреЗрд▓ рднреЗрджреНрдпрддрд╛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рдмрдврд╝рд╛рдиреЗ, AppContainer
рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ AppContainer
рдХрд░рдиреЗ рдФрд░ рд╣рдорд▓рд╛ рдорд╢реАрди рдкрд░ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЛрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдСрдкрд░реЗрд╢рди рдХреЛ Microsoft Windows 10 Pro 1703 (10.0.15063)
рдФрд░ Microsoft Edge (40.15063.0.0)
рдмреНрд░рд╛рдЙрдЬрд╝рд░ Microsoft Edge (40.15063.0.0)
рд╕рд╛рде рд╕реНрдЯреИрдВрдб рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЪрд░рдг 1. рдЖрджрд┐рдо arbitrary address read/write
рдПрдХ arbitrary address read/write
рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рднреЗрджреНрдпрддрд╛ рдФрд░ OOB
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг
рдСрдбрд┐рдпреЛ рдмрдлрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдХреЙрдкреАрдлреНрд░реЙрдордЪреИрдирд▓ рд╡рд┐рдзрд┐ рдореЗрдВ рдЯрд╛рдЗрдк use-after-free
рдПрдХ рднреЗрджреНрдпрддрд╛ рдореМрдЬреВрдж рд╣реИред
AudioBuffer рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рдПрдХ рдЫреЛрдЯреА рдСрдбрд┐рдпреЛ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдФрд░ AudioContext.decodeAudioData () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╛ AudioContext.createBuffer () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рд╕реЗред AudioBuffer рдореЗрдВ рд░рдЦреЗ рдЧрдП рдСрдбрд┐рдпреЛ рдбреЗрдЯрд╛ рдХреЛ AudioBufferSourceNode рдореЗрдВ рд╡рд╛рдкрд╕ рдЦреЗрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
The Advanced Exploitation of 64-bit Edge Browser Use-After-Free Vulnerability on Windows 10
рд╡рд▓реНрдирд░реЗрдмрд┐рд▓рд┐рдЯреА рдХреА The Advanced Exploitation of 64-bit Edge Browser Use-After-Free Vulnerability on Windows 10
рдкреНрд░рд╕реНрддреБрддрд┐ рднреЗрджреНрдпрддрд╛ рдФрд░ рдкреИрдЪ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдЬрдм copyFromChannel
рд╡рд┐рдзрд┐ рдХреЛ copyFromChannel
, рддреЛ рдСрдбрд┐рдпреЛ рдмрдлрд░ рдЪреИрдирд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрд╣рд▓реЗ рддрд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ destination
рдмрдлрд░ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ destination
рд╣реИред рд╡рд┐рдзрд┐ рдЪреИрдирд▓ рдирдВрдмрд░ ( channelNumber
) рдФрд░ рдСрдбрд┐рдпреЛ рдмрдлрд░ ( startInChannel
) рдореЗрдВ рдСрдлрд╕реЗрдЯ рдХреЛ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред CDOMAudioBuffer::Var_copyFromChannel
рдореЗрдВ рд╕реАрдзреЗ destination
рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ CDOMAudioBuffer::Var_copyFromChannel
рдлрд╝рдВрдХреНрд╢рди, destination
рдмрдлрд╝рд░ рдХреИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд╕реНрдЯреИрдХ рдкрд░ рд╕реНрдерд╛рдиреАрдп рдлрд╝рдВрдХреНрд╢рди рдЪрд░ рдореЗрдВ рдмрдлрд░ рдХрд╛ рдкрддрд╛ рдФрд░ рдЖрдХрд╛рд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ channelNumber
рдФрд░ startInChannel
рдСрдмреНрдЬреЗрдХреНрдЯ рдорд╛рдиреЛрдВ рдХреЛ Int
рдкреНрд░рдХрд╛рд░ рдореЗрдВ startInChannel
рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП startInChannel
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рди рд╡рд┐рдзрд┐ред рднреЗрджреНрдпрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдХреИрд╢реНрдб рдмрдлрд░ рдХреЛ valueOf
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдУрд╡рд░рд░рд╛рдЗрдб рд╡рд┐рдзрд┐ рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд╕рдордп рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
рдпрд╣ рдХреЛрдб рдмрдлрд░ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Web Workers
рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЦрд╛рд▓реА Worker
, рд╣рдо рдЙрд╕реЗ postMessage
рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рджреВрд╕рд░рд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ transfer
рддрд░реНрдХ Transferable
рд╡рд╕реНрддреБрдУрдВ ( ArrayBuffer
, MessagePost
рдпрд╛ ImageBitmap
) рдХреА рдПрдХ рд╕рд░рдгреА рд▓реЗрддрд╛ рд╣реИ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ Worker
рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, sleep
рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рд╣реЛрддрд╛ рд╣реИ - рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ (рдЗрд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдг рдкреНрд░рдгрд╛рд▓реА ( GC
, Garbage Collector
) рдмрдлрд░ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░реЗ, рдЬрд┐рди рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╡реЗрдм рд╡рд░реНрдХрд░реНрд╕ рдкреГрд╖реНрдарднреВрдорд┐ рдереНрд░реЗрдб рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рд╕рд╛рдзрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд╡рд░реНрдХрд░ рдереНрд░реЗрдб рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗ XMLHttpRequest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ I / O рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ responseXML рдФрд░ рдЪреИрдирд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╣рдореЗрд╢рд╛ рд░рд┐рдХреНрдд рд░рд╣реЗрдВрдЧреА)ред рдПрдХ рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЗрд╕ рдХреЛрдб (рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд) рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛрдб рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдХреЛрдб рдХреЛ рдПрдЬ рдореЗрдВ рдбреАрдмрдЧрд░ рдХреЗ рддрд╣рдд рдЪрд▓рд╛рдХрд░, рдЖрдк рдирд┐рдореНрди рдХреНрд░реИрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдирддреАрдЬрддрди, copyFromChannel
рдХреЙрд▓ рдСрдбрд┐рдпреЛ рдмрдлрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрд┐рдирд╛ рдореЗрдореЛрд░реА рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рднреЗрджреНрдпрддрд╛ рдХрд╛ рджреЛрд╣рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЖрд╡рдВрдЯрди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд░рдгреА рдЦрдВрдб рдПрдХрджрдо рд╕рд╣реА рд╣реИред
Chakra
рдореЗрдВ Chakra
( Edge
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд JS
рдЗрдВрдЬрди) рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ: рд╕рд░рдгреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рд╕рд░рдгреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ (рдпрд╛ рдорд╛рди, IntArray
рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ IntArray
) рдХреЛ рдПрдХ рдЕрд▓рдЧ рдореЗрдореЛрд░реА рдПрд░рд┐рдпрд╛ - рд╕реЗрдЧрдореЗрдВрдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реВрдЪрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рд╕рд░рдгреАред рд╕реЗрдЧрдореЗрдВрдЯ рд╣реЗрдбрд░ рдореЗрдВ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рдЖрдХрд╛рд░ рд╕рд╣рд┐рдд рд╡рд┐рднрд┐рдиреНрди рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ, рдЬреЛ рдПрд░реЗ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рднреА рд╕рд░рдгреА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реА рдореМрдЬреВрдж рд╣реИред рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдореБрдХреНрдд рдХрд┐рдП рдЧрдП рд╕реНрдерд╛рди рдореЗрдВ рд╕рд░рдгреА рдЦрдВрдб рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдСрдбрд┐рдпреЛ рдмрдлрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╕рд░рдгреА рдЦрдВрдб рдХреЗ рд╣реЗрдбрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо sleep(1000);
рдмрд╛рдж рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ sleep(1000);
:
... arr = new Array(128); for(var i = 0; i < arr.length; i++) { arr[i] = new Array(0x3ff0); for(var j = 0; j < arr[i].length; j++) arr[i][j] = 0x30303030; } ...
рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЖрдХрд╛рд░ рдЗрд╕рд▓рд┐рдП рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд░рдгреА рдЦрдВрдб рдХрд╛ рдЖрдХрд╛рд░ рдкреВрд░реЗ рдвреЗрд░ рдЦрдВрдб (рдвреЗрд░ рд╕реНрдореГрддрд┐ рдХрд╛ рдиреНрдпреВрдирддрдо рдЕрд╡рд┐рднрд╛рдЬреНрдп рдЯреБрдХрдбрд╝рд╛, рдЬрд┐рд╕рдХрд╛ рдЖрдХрд╛рд░ 0x10000 рдмрд╛рдЗрдЯреНрд╕ рд╣реИ) рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддрд╛ рд╣реИред рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдПрдВ, memcpy
рдлрдВрдХреНрд╢рди рдХреЛ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ (рдЗрд╕рдореЗрдВ рдХрдИ memcpy
рдХреЙрд▓ рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдпрд╣ edgehtml!WebCore::AudioBufferData::copyBufferData
рдкрд░ рдкрд╣рд▓реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ edgehtml!WebCore::AudioBufferData::copyBufferData
), рдЬрд┐рд╕рдореЗрдВ рджреБрд░реНрдШрдЯрдирд╛ рд╣реБрдИред рд╣рдореЗрдВ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВ:

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рдЕрдм рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░рдгреА рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рд╣реЗрдбрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдореВрд▓реНрдп рд╕рд░рдгреА рдХреЗ рдЖрдХрд╛рд░ рд╣реИрдВ, рдЬрд┐рдирдХреА рдСрдлрд╕реЗрдЯ рд╣рдо рдКрдкрд░ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдСрдбрд┐рдпреЛ рдмрдлрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрджрд▓реЗрдВ:
... var t = audioBuf.getChannelData(0); var ta2 = new Uint32Array(t.buffer); ta2[0] = 0; ta2[1] = 0; ta2[2] = 0xffe0; ta2[3] = 0; ta2[4] = 0; ta2[5] = 0; ta2[6] = 0xfba6; ta2[7] = 0; ta2[8] = 0; ta2[9] = 0x7fffffff - 2; ta2[10] = 0x7fffffff; ta2[11] = 0; ta2[12] = 0; ta2[13] = 0; ta2[14] = 0x40404040; ta2[15] = 0x50505050; ...
ta2[14]
рдФрд░ ta2[15]
рдХреЗ рдореВрд▓реНрдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ - рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реЗрдЧрдореЗрдВрдЯ рд╣реЗрдбрд░ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЦреБрдж рдРрд░реЗ рд╡реИрд▓реНрдпреВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд╕рд╛рде, рд╣рдо рд╡реИрд╢реНрд╡рд┐рдХ рдЕрд░реИ рд╕рд░рдгреА рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕рд░рдгреА рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
... for(var i = 0; i < arr.length; i++) { if(arr[i][0] == 0x40404040 && arr[i][1] == 0x50505050) { alert('Target array idx: ' + i); target_idx = i; target_arr = arr[i]; break; } }
рдпрджрд┐ рдПрдХ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рд░рдгреА рдорд┐рд▓реА, рддреЛ рдкрд╣рд▓реЗ рджреЛ рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдлрд┐рд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдРрд╕рд╛ рд╕рд░рдгреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЦрдВрдб рдЖрдХрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рд╕реЗ рдмрдбрд╝рд╛ рд╣реИред рд╢реЗрд╖ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рджреЛ рд╕рдВрд╕реНрдерд╛рдУрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ: рд╕рд░рдгреА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ, рдЬрд╣рд╛рдВ рдпрд╣ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рд╛, рдФрд░ рд╕рд░рдгреА рд╕реЗрдЧрдореЗрдВрдЯ рдореЗрдВ, рдЬрд╣рд╛рдВ рд╣рдордиреЗ рдЗрд╕реЗ рдмрдврд╝рд╛рдпрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ JIT
рдореЛрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕рд░рдгреА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЖрдХрд╛рд░ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
function arr_get(idx) { return target_arr[idx]; } function arr_set(idx, val) { target_arr[idx] = val; } for(var i = 0; i < 0x3ff0; i++) { arr_set(i, arr_get(i)); }
рдЙрд╕рдХреЗ рдмрд╛рдж, arr_get
рдФрд░ arr_set
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП arr_set
рдЖрдк рд╕рд░рдгреА ( OOB
, out-of-bound
) рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
OOB
рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдордирдорд╛рдиреЗ рдкрддреЗ рдкрд░ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдЖрджрд┐рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рд╣рдо рдПрдХ рдРрд╕реА рддрдХрдиреАрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ OOB
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдордирдорд╛рдиреЗ рдкрддреЗ рдкрд░ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЬрд┐рд╕ рд╡рд┐рдзрд┐ рд╕реЗ рд╣рдо рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рд╕реНрд░реЛрдд [1] рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рднреА рд╣реЛрдВрдЧреЗред
Edge
рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ Edge
рдвреЗрд░ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрд┐рд╕реА рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ рд╡реЗ рд╕рд░рдгреА рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рдмрд╛рдж рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рдЖрдЧреЗ рд╣рдо рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╣рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рддрд░реАрдХреЛрдВ ( vftable
) рдХреА рдПрдХ рдЖрднрд╛рд╕реА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдкрдврд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╣рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрддрд╛ рд╕реНрдерд╛рди ( vftable
) рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХрдХрд░рдг рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХрд┐рди рд╡рд╕реНрддреБрдУрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рд╕реЗ рд╣рдореЗрдВ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА? DataView
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдЗрд╕рдХреЗ рд▓рд┐рдП рдорд╣рд╛рди рд╣реИред
рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдмрд╛рдЗрдЯ рдСрд░реНрдбрд░ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ DataView рдПрдХ рдмрд╛рдЗрдирд░реА ArrayBuffer рдореЗрдВ рдХрдИ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
DataView
рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдПрдХ рдмрдлрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдордирдорд╛рдиреЗ рдкрддреЗ рдкрд░ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рджреЛ DataView
( dv1
рдФрд░ dv2
) рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: dv1
рдмрдлрд░ рдХреЗ рд░реВрдк рдореЗрдВ dv1
рд╕рд░рдгреА рддрдХ dv2
рдкрддрд╛ dv2
рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдЕрдм dv1
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо dv2
рдмрдлрд░ рдХреЗ рдкрддреЗ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдкрдврд╝рдирд╛ рдФрд░ рд▓рд┐рдЦрдирд╛ рд╣рд╛рд╕рд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдореГрддрд┐ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкрддреЗ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рддрдХрдиреАрдХ рдореМрдЬреВрдж рд╣реИ: рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ Array
рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЗрд╕рдХреА vftable
рдФрд░ typeId
(рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдкрд╣рд▓реЗ рджреЛ 64-рдмрд┐рдЯ рдлрд╝реАрд▓реНрдб) рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП vftable
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкрддрд╛ рдПрд░реЗ рдХреЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╕рд╣реЗрдЬреЗ рдЧрдП vftable
рдФрд░ typeId
рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдм рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкрддреЗ рдХреЗ рдЬреВрдирд┐рдпрд░ рдФрд░ рд╕реАрдирд┐рдпрд░ рдбрдмрд▓ рд╢рдмреНрдж рдХреЛ рд╕рд░рдгреА рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рддрддреНрд╡ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрдХрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдирдпрд╛ рд╕рд░рдгреА IntArray
, рдФрд░ рд╕рд░рдгреА рдХреЗ 4-рдмрд╛рдЗрдЯ рдорд╛рди рдЕрдкрдиреЗ рдЦрдВрдб рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ рдЬреИрд╕реЗ рд╡реЗ рд╣реИрдВред рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХрд┐рд╕реА рдРрд░реЗ рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╕рдордп, рдРрд░реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╕реЗрдЧрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдПрдбреНрд░реЗрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд░реВрдкрд╛рдВрддрд░рдг рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдФрд░ typeId
ред рддрджрдиреБрд╕рд╛рд░, рдпрджрд┐ рд╣рдо рдореВрд▓ рдорд╛рдиреЛрдВ рдХреЛ vftable
рдФрд░ typeId
, рддреЛ рдЗрд╕ рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рд╕реАрдзреЗ рдЦрдВрдб рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:
function addressOf(obj) { var hdr_backup = new Array(4);
рдПрдХ рдЦреБрд▓рд╛ рдкреНрд░рд╢реНрди OOB
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБрдУрдВ рдФрд░ рдЙрдирдХреА рдЦреЛрдЬ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд░рд╣рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрдм рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ рд╡реЗ рд╕рд░рдгреА рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рдмрд╛рдж рдмрд╛рд╣рд░ рдЦрдбрд╝реЗ рд╣реЛрдиреЗ рд▓рдЧреЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рдЖрдЧреЗ рд╣рдо рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЖрд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБрдУрдВ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╕рд░рдгреА рдХреЗ рдмрд╛рд╣рд░ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рднреА рд╡рд╕реНрддреБрдПрдВ рдвреЗрд░ рдХреЗ рдПрдХ рдЦрдВрдб рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ, рдЖрдк рдЦреЛрдЬ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ 0x10000
рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдореЗрдВ рдвреЗрд░ рдХреЗ рдЦрдВрдбреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдвреЗрд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЦрдВрдб рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдХреБрдЫ рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рдорд╛рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, DataView
рдпрд╣ byteOffset
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдпрд╛, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, IntArray
рдореЗрдВ Edge
рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдорд╛рди 0x10005
рд╣рдореЗрд╢рд╛ 0x18
рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рддрдХрдиреАрдХреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдХрд░, рдЖрдк рдПрдХ рдордирдорд╛рдиреЗ рдкрддреЗ рдкрд░ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ DataView
рдореЗрдореЛрд░реА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдкрдврд╝рдиреЗ рдХрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╣реИред

рдЪрд░рдг 2. рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдПрдкреАрдЖрдИ рдХрд╛рд░реНрдп рдХрд░рдирд╛
рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдо Edge
рдХрдВрдЯреЗрдВрдЯ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдордирдорд╛рдиреЗ рдкрддреЗ рдкрд░ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред рдореБрдЦреНрдп рддрдХрдиреАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдХрд┐ рдЖрд╡реЗрджрди рдХреЗ рдЖрдЧреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдФрд░ рдЙрдирдХреЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЗрдЦ app specific security mitigation
( рднрд╛рдЧ 1, рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ , рднрд╛рдЧ 2, рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдФрд░ рдПрдЬ , рднрд╛рдЧ 3, Google рдХреНрд░реЛрдо ) рдХреА рдПрдХ рдЫреЛрдЯреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд▓рд┐рдЦреА рдереА, рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрднреА рднреА рдЦрдбрд╝реЗ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдЙрддреНрдкрд╛рджреЛрдВ рдореЗрдВ рдирдП рдЙрдкрдХрд░рдг рдЬреЛрдбрд╝реЗрдВ рд╕реБрд░рдХреНрд╖рд╛ред
рдкрддрд╛ рд╕реНрдерд╛рди рд░реИрдВрдбрдорд╛рдЗрдЬреЗрд╢рди ( ASLR
)
ASLR (рд╕рдВрд▓рдЧреНрди рдкрддрд╛ рд╕реНрдерд╛рди рд▓реЗрдЖрдЙрдЯ рд░реИрдВрдбрдорд╛рдЗрдЬреЗрд╢рди) рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдПрдХ рддрдХрдиреАрдХ рд╣реИ рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрддрд╛ рд╕реНрдерд╛рди рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдмрджрд▓рддреА рд╣реИ, рдЕрд░реНрдерд╛рддреН: рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдЫрд╡рд┐рдпрд╛рдВ, рд▓реЛрдб рдХреА рдЧрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдвреЗрд░ рдФрд░ рдвреЗрд░ред
рдКрдкрд░, рд╣рдордиреЗ рд╡рд░реНрдЪреБрдЕрд▓ рдХреНрд▓рд╛рд╕ рдЯреЗрдмрд▓ рдХреЗ рдкрддреЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рд╕реАрдЦрд╛, рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ Chakra.dll
рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрддреЗ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП ASLR
рдЖрдЧреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреЗрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдбреЗрдЯрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрд░рдХреНрд╖рдг ( DEP
, NX
)
рдбреЗрдЯрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд░реЛрдХрдерд╛рдо (рдбреАрдИрдкреА) рд▓рд┐рдирдХреНрд╕, рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕, рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ "рдбреЗрдЯрд╛ рдХреЗрд╡рд▓" рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рд╣рдорд▓реЛрдВ рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛, рдЬреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрдлрд░ рдУрд╡рд░рдлреНрд▓реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреЛрдб рдХреЛ рдмрдЪрд╛рддреЗ рд╣реИрдВред
рдЗрд╕ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ VirtualAlloc
рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ VirtualAlloc
рдХреЛ рдХреЙрд▓ VirtualAlloc
ред рд▓реЗрдХрд┐рди Edge
рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ Edge
рдпрд╣ рд╡рд┐рдзрд┐ ACG
(рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рдХреЗ рдХрд╛рд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред
рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдЧрд╛рд░реНрдб ( CFG
)
CFG
рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рддрдВрддреНрд░ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдХрд░реНрдиреЗрд▓-рдореЛрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рджреЛрд╣рди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рдирд╛ рд╣реИред рдЗрд╕ рддрдВрддреНрд░ рдХреЗ рдХрд╛рдо рдореЗрдВ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдХреЙрд▓ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдереНрд░реЗрдб рдХреЛ рд░реЛрдХрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдХреЗ)
рдпрд╣ рддрдХрдиреАрдХ рдХреЗрд╡рд▓ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдХреЙрд▓ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд░реНрдЪреБрдЕрд▓ рдЯреЗрдмрд▓ рд╕реЗ рд╡рд┐рдзрд┐ рдХреЙрд▓ред рд╕реНрдЯреИрдХ рдкрд░ рд░рд┐рдЯрд░реНрди рдкрддреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ ROP
рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред ROP/JOP/COP
рдЪреЗрди рдХрд╛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ Intel
рдирдИ рддрдХрдиреАрдХ рджреНрд╡рд╛рд░рд╛ Control-flow Enforcement Technology
рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: Control-flow Enforcement Technology
( CET
)ред рдЗрд╕ рддрдХрдиреАрдХ рдореЗрдВ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ:
Shadow Stack
(рдЫрд╛рдпрд╛ рдвреЗрд░) - рд░рд┐рдЯрд░реНрди рдкрддреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ ROP
рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ;Indirect Branch Tracking
JOP/COP
рдЪреЗрди рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рдПрдХ рдирдпрд╛ ENDBRANCH
рдирд┐рд░реНрджреЗрд╢ рд╣реИ, рдЬреЛ call
рдФрд░ jmp
рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╡реИрдз рд╕рдВрдХреНрд░рдордг рдкрддреЗ jmp
рдХрд░рддрд╛ рд╣реИред
рдордирдорд╛рдирд╛ рдХреЛрдб рдЧрд╛рд░реНрдб ( ACG
)
ACG
рдПрдХ рдРрд╕реА рддрдХрдиреАрдХ рд╣реИ рдЬреЛ рдбрд╛рдпрдиреЗрдорд┐рдХ рдХреЛрдб рдЬреЗрдирд░реЗрд╢рди рдХреЛ рд░реЛрдХрддреА рд╣реИ (рдпрд╣ rwx
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдордирд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрд╢реЛрдзрдиреЛрдВ (рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрджрд╛ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХреЛ VirtaulAlloc
рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ)
рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛, CFG
рддрд░рд╣, ROP
рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдирд╣реАрдВ рд░реЛрдХрддреА рд╣реИред
AppContainer рдЕрд▓рдЧрд╛рд╡
AppContainer рдПрдХ Microsoft рддрдХрдиреАрдХ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓рд╛рдХрд░ рдХрд┐рд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдпрд╣ рддрдХрдиреАрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕, рдбрд┐рд╡рд╛рдЗрд╕, рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо, рдиреЗрдЯрд╡рд░реНрдХ, рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдордирдорд╛рдиреЗ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрддрд╛ рд╣реИред
рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдСрдкрд░реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдХрд░рддреА рд╣реИред рдЗрд╕рдХреА рд╡рдЬрд╣ рд╕реЗ, рд╣рдо рддреГрддреАрдп-рдкрдХреНрд╖ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдпрд╛ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдпрд╛ рдбрд┐рд╕реНрдХ рдкрд░ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ AppContainer рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╛ рдУрдПрд╕ рдХреЗ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рджреЛрд╣рди рдХрд░рдХреЗ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рдмрдврд╝рд╛рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ Microsoft
рдкрд╛рд╕ security mitigation
рддрдХрдиреАрдХреЛрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреА рддрдХрдиреАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЗрдирд╛рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ ( ROP
рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ) рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рддрд╣рдд рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдореБрджреНрджрд╛ рд╣реИред
Pwn.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рд╕рднреА рд╕реБрд░рдХреНрд╖рд╛ рддрдХрдиреАрдХреЛрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ, рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ рдХрд┐ рдордирдорд╛рдиреЗ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ AppContainer
рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо Windows
рдХрд░реНрдиреЗрд▓ рдореЗрдВ рднреЗрджреНрдпрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ JS
рдХреЛрдб рдФрд░ ROP
рдЪреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ ROP
рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЛрд╖рдг рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЧреИрдЬреЗрдЯ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдЖрд╡рд╢реНрдпрдХ WinAPI
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА pwn.js
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд▓рд╛рдЧреВ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдХреЗрд╡рд▓ read
рдФрд░ write
рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЖрд╡рд╢реНрдпрдХ WinAPI
рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ API
рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред pwn.js
64-рдмрд┐рдЯ рдорд╛рди рдФрд░ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдФрд░ рдЯреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ, рд╣рдореЗрдВ рджреЛ рд╕рдВрдмрдВрдзрд┐рдд DataView
рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдорд┐рд▓реАред рд╢реЛрд╖рдг рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрди рд╡рд░реНрдЧ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛:
var Exploit = (function() { var ChakraExploit = pwnjs.ChakraExploit; var Integer = pwnjs.Integer; function Exploit() { ChakraExploit.call(this); ...
, MessageBoxA
:
function run() { with (new Exploit()) {
:

3.
WinAPI
. . CVE-2016-3309
. [7] [8], pwn.js
[2] , GDI
-. [9], [10] [11]. . , . , AppContainer
, pwn.js
. cmd.exe
SYSTEM
.
GDI тАФ Windows , , .
, . JS
- 64- kernel_read_64
kernel_write_64
, . Windows. BITMAP
, . pwn.js
. BITMAP
, , :
var BITMAP = new StructType([ ['poolHeader', new ArrayType(Uint32, 4)],
Tid
KTHREAD
, , , EmpCheckErrataList
, . , :
... var nt_EmpCheckErrataList_ptr = worker_bitmap_obj.Tid.add(0x2a8); var nt_EmpCheckErrataList = kernel_read_64(nt_EmpCheckErrataList_ptr); var ntoskrnl_base_address = nt_EmpCheckErrataList.sub( g_config.nt_empCheckErrataList_offset); ...
, AppContainer
. AppContainer
IsPackagedProcess
( Process Environment Block
, PEB
), . Access Token
, AppContainer
. Access Token
, . Access Token
, . EPROCESS
ActiveProcessLinks
, . PEB
EPROCESS
. PsInitialSystemProcess
, , ActiveProcessLinks
.
Edge
: , Edge
. SYSTEM
. , , winlogon.exe
.
pwn.js
:
:

YouTube , Microsoft Edge.
рдкрд░рд┐рдгрд╛рдо
:
- ,
Edge
Windows
, 13 , CVE-2017-0240
, . CVE-2016-3309
. JS
- 666
JS
- :
cmd.exe
SYSTEM
,
, , . , , . .
- Liu Jin тАФ The Advanced Exploitation of 64-bit Edge Browser Use-After-Free Vulnerability on Windows 10
- Andrew Wesie, Brian Pak тАФ 1-Day Browser & Kernel
Exploitation - Natalie Silvanovich тАФ The ECMA and the Chakra. Hunting bugs in the Microsoft Edge Script Engine
- Natalie Silvanovich тАФ Your Chakra Is Not Aligned. Hunting bugs in the Microsoft Edge Script Engine
- phoenhex team тАФ cve-2018-8629-chakra.js
- Quarkslab тАФ Exploiting MS16-145: MS Edge TypedArray.sort Use-After-Free (CVE-2016-7288)
- Exploiting MS16-098 RGNOBJ Integer Overflow on Windows 8.1 x64 bit by abusing GDI objects
- Siberas тАФ Kernel Exploitation Case Study тАФ "Wild" Pool Overflow on Win10 x64 RS2 (CVE-2016-3309 Reloaded)
- Saif El-Sherei тАФ Demystifying Windows Kernel Exploitation by Abusing GDI Objects
- Diego Juarez тАФ Abusing GDI for ring0 exploit primitives
- Nicolas A. Economou тАФ Abusing GDI for ring0 exploit
primitives: Evolution - pwn.js