Libsass: sassc . рдореЗрдВ рдвреЗрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдЕрдХреНрддреВре░ 2019  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: sass/libsass

рд╣рдордиреЗ рдПрд╕рдПрдПрд╕рд╕реА рдмрд╛рдЗрдирд░реА рдореЗрдВ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдкрд╛рдпрд╛ рдФрд░ рдПрд╕рдПрдПрд╕рдПрд╕рд╕реА рдХреЛ рдХреНрд▓реИрдВрдЧ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЖрд╕рди рдХреЗ рд╕рд╛рде рдЕрдиреБрдкрд╛рд▓рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдорд╢реАрди рд╕реЗрдЯ рдЕрдк

Machine : Ubuntu 16.04.3 LTS
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.11)
Commit : 4da7c4b
Command : sassc POC

рд╢рд┐рдХрд╛рдпрдд : рд╕реАрд╕реА = рдПрдПрдлрдПрд▓-рдХреНрд▓реИрдВрдЧ-рдлрд╛рд╕реНрдЯ рд╕реАрдПрдХреНрд╕рдПрдХреНрд╕ = рдПрдПрдлрдПрд▓-рдХреНрд▓реИрдВрдЧ-рдлрд╛рд╕реНрдЯ ++ рдПрдПрдлрдПрд▓_рдпреВрдПрд╕рдИ_рдПрдПрд╕рдПрдПрди = 1 рдореЗрдХ-рд╕реА рдПрд╕рдПрдПрд╕рдПрд╕рд╕реА -рдЬреЗ 4
рдкреАрдУрд╕реА : POC.scss.zip

рдЖрд╕рди рдЖрдЙрдЯрдкреБрдЯ

fuzzer<strong i="17">@fuzzer</strong>:~/victim/libsass/sassc/bin$ ./sassc -v
sassc: 3.6.1-5-g507f0
libsass: 3.6.2
sass2scss: 1.1.1
sass: 3.5
fuzzer<strong i="18">@fuzzer</strong>:~/victim/libsass/sassc/bin$

fuzzer<strong i="19">@fuzzer</strong>:~/victim/libsass/sassc/bin$ ./sassc in/POC.scss
ASAN:DEADLYSIGNAL
=================================================================
==23322==ERROR: AddressSanitizer: stack-overflow on address 0x7ffdfae50e58 (pc 0x00000049382c bp 0x7ffdfae516b0 sp 0x7ffdfae50e30 T0)
    #0 0x49382b in __interceptor_strcmp.part.24 (/home/fuzzer/victim/libsass/sassc/bin/sassc+0x49382b)
    #1 0x9d6aed in std::type_info::operator==(std::type_info const&) const /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/typeinfo:124:5
    #2 0x9d6aed in Sass::Variable* Sass::Cast<Sass::Variable>(Sass::AST_Node*) /home/fuzzer/victim/libsass/src/ast.hpp:114
    #3 0x9d6aed in Sass::Eval::operator()(Sass::Binary_Expression*) /home/fuzzer/victim/libsass/src/eval.cpp:570
    #4 0x9d7a5e in Sass::Eval::operator()(Sass::Binary_Expression*) /home/fuzzer/victim/libsass/src/eval.cpp:582:13
    #5 0x9d7a5e in Sass::Eval::operator()(Sass::Binary_Expression*) /home/fuzzer/victim/libsass/src/eval.cpp:582:13
    #6 0x9d7a5e in Sass::Eval::operator()(Sass::Binary_Expression*) /home/fuzzer/victim/libsass/src/eval.cpp:582:13
    #7 0x9d7a5e in Sass::Eval::operator()(Sass::Binary_Expression*) /home/fuzzer/victim/libsass/src/eval.cpp:582:13
    #8 0x9d7a5e in Sass::Eval::operator()(Sass::Binary_Expression*) /home/fuzzer/victim/libsass/src/eval.cpp:582:13

// SNIPPED //

    #252 0x9d7a5e in Sass::Eval::operator()(Sass::Binary_Expression*) /home/fuzzer/victim/libsass/src/eval.cpp:582:13
    #253 0x9d7a5e in Sass::Eval::operator()(Sass::Binary_Expression*) /home/fuzzer/victim/libsass/src/eval.cpp:582:13

SUMMARY: AddressSanitizer: stack-overflow (/home/fuzzer/victim/libsass/sassc/bin/sassc+0x49382b) in __interceptor_strcmp.part.24
==23322==ABORTING
fuzzer<strong i="20">@fuzzer</strong>:~/victim/libsass/sassc/bin$
Fuzzy Invalid - Not Reproducible

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЕрд░реЗ @ рдирд┐рдХреЛрд▓рдЬреА 25 , рдирд╣реАрдВ, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╕рднреНрдп рдУрдПрд╕ рдХреЗ рд╕рд╛рде рдпрд╣ рдПрдХ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рднреА рдПрдирд╡реА рдкрд░ рд░рд┐рдХрд░реНрд╕рд┐рд╡ рдкрд╛рд░реНрд╕рд░ рд╕реЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдЯрд╛рд▓рдирд╛ рд╣реИ, рддреЛ рдореИрдВ рд╕рднреА рдХрд╛рди рд╣реВрдВред рдпрд╣ рдЙрд╕реА рддрд░рд╣ рд╣реИ рдЬрдм рдЖрдк рдЬреАрд╕реАрд╕реА/рдХреНрд▓реИрдВрдЧ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдмрд╣реБрдд рдмрдбрд╝реА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдЦрд┐рд▓рд╛рддреЗ рд╣реИрдВред LibSass рдЙрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рдЖрдк рдЗрд╕реЗ рдХрд┐рддрдирд╛ рд╕реНрдЯреИрдХ рд╕реНрдкреЗрд╕ рджреЗрддреЗ рд╣реИрдВ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдХреБрдЫ OS рдкрд░ рд╕реБрдзрд╛рд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗред рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрдб рдПрдХреНрд╕реЗрдкреНрд╢рди рдХреЛ рдкрдХрдбрд╝рдХрд░ рдпрд╛ rlimit, рдпрд╛ linux рдкрд░ SIGSEGV рд╕реЗрдЯ рдХрд░рдХреЗред рд▓реЗрдХрд┐рди рд╣рдо рдХрднреА рднреА рд╕рднреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдЪрдд рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

CVE-2019-18797 рдХреЗ рд░реВрдк рдореЗрдВ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдиреЗ рдПрд╕рдПрдПрд╕рд╕реА рдХреЛ рдХрд┐рд╕ рдвреЗрд░ рдХрд╛ рдЖрдХрд╛рд░ рджрд┐рдпрд╛?

Error: Stack depth exceeded max of 1024
        on line 1:23494 of test.scss

рдореИрдВ рдЗрд╕реЗ рдЦреБрд▓рд╛ рд░рдЦреВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЖрд╕рди рдХреЗ рддрд╣рдд рдЗрд╕рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдвреЗрд░ рдХрд╛ рдЖрдХрд╛рд░ рдЫреЛрдЯрд╛ рд╣реИред

@mgreter рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХрднреА рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?
рдореИрдВ рдКрдкрд░ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдиреЗ рдХрд╣рд╛ рдерд╛ рдХрд┐ рдпрд╣ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрднреА рднреА рдПрдХ рд╕реАрд╡реАрдИ рд╕рдХреНрд░рд┐рдп рд╣реИред
рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдкрд░ рд╡рд┐рд╡рд╛рдж рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж !

рдЕрд░реЗ @ рдирд┐рдХреЛрд▓рдЬреА 25 , рдирд╣реАрдВ, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╕рднреНрдп рдУрдПрд╕ рдХреЗ рд╕рд╛рде рдпрд╣ рдПрдХ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рднреА рдПрдирд╡реА рдкрд░ рд░рд┐рдХрд░реНрд╕рд┐рд╡ рдкрд╛рд░реНрд╕рд░ рд╕реЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдЯрд╛рд▓рдирд╛ рд╣реИ, рддреЛ рдореИрдВ рд╕рднреА рдХрд╛рди рд╣реВрдВред рдпрд╣ рдЙрд╕реА рддрд░рд╣ рд╣реИ рдЬрдм рдЖрдк рдЬреАрд╕реАрд╕реА/рдХреНрд▓реИрдВрдЧ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдмрд╣реБрдд рдмрдбрд╝реА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдЦрд┐рд▓рд╛рддреЗ рд╣реИрдВред LibSass рдЙрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рдЖрдк рдЗрд╕реЗ рдХрд┐рддрдирд╛ рд╕реНрдЯреИрдХ рд╕реНрдкреЗрд╕ рджреЗрддреЗ рд╣реИрдВ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдХреБрдЫ OS рдкрд░ рд╕реБрдзрд╛рд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗред рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрдб рдПрдХреНрд╕реЗрдкреНрд╢рди рдХреЛ рдкрдХрдбрд╝рдХрд░ рдпрд╛ rlimit, рдпрд╛ linux рдкрд░ SIGSEGV рд╕реЗрдЯ рдХрд░рдХреЗред рд▓реЗрдХрд┐рди рд╣рдо рдХрднреА рднреА рд╕рднреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдЪрдд рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

holmesmr picture holmesmr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Nimce picture Nimce  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

schneems picture schneems  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

luiscla27 picture luiscla27  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Hint-ru picture Hint-ru  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ