Snuffleupagus ํ”„๋กœ์ ํŠธ๋Š” ์ทจ์•ฝ์ ์„ ์ฐจ๋‹จํ•˜๊ธฐ ์œ„ํ•œ PHP ๋ชจ๋“ˆ์„ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ํ”„๋ ˆ์ž„ ์›Œํฌ์—์„œ ์Šค๋ˆ„ํ”Œ๋ฃจํŒŒ๊ตฌ์Šค ๊ฐœ๋ฐœ ์ค‘ ํ™˜๊ฒฝ์˜ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ณ  PHP ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์‹œ ์ทจ์•ฝ์ ์œผ๋กœ ์ด์–ด์ง€๋Š” ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜๋ฅผ ์ฐจ๋‹จํ•˜๋„๋ก ์„ค๊ณ„๋œ PHP7 ์ธํ„ฐํ”„๋ฆฌํ„ฐ์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ทจ์•ฝํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ํŠน์ • ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์ƒ ํŒจ์น˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๋Œ€๋Ÿ‰ ํ˜ธ์ŠคํŒ… ์‹œ์Šคํ…œ์— ์‚ฌ์šฉํ•˜๊ธฐ์— ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“ˆ์€ C๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(php.ini์˜ "extension=snuffleupagus.so") ํ˜•ํƒœ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ์ž LGPL 3.0์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Snuffleupagus๋Š” ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ฑฐ๋‚˜ ์ž์‹ ๋งŒ์˜ ๊ทœ์น™์„ ์ƒ์„ฑํ•˜์—ฌ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ๋ฐ ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ทœ์น™ ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "sp.disable_function.function("system").param("command").value_r("[$|;&`\\n]").drop();" ๊ทœ์น™์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ system() ํ•จ์ˆ˜ ์ธ์ˆ˜์—์„œ ํŠน์ˆ˜ ๋ฌธ์ž ์‚ฌ์šฉ์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋‹ค์Œ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒ ํŒจ์น˜ ์•Œ๋ ค์ง„ ์ทจ์•ฝ์ ์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๊ฐ€ ์‹ค์‹œํ•œ ํ…Œ์ŠคํŠธ์— ๋”ฐ๋ฅด๋ฉด Snuffleupagus๋Š” ์„ฑ๋Šฅ์„ ๊ฑฐ์˜ ์ €ํ•˜์‹œํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž์ฒด ๋ณด์•ˆ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด(๋ณด์•ˆ ๊ณ„์ธต์˜ ์ทจ์•ฝ์„ฑ์ด ์ถ”๊ฐ€ ๊ณต๊ฒฉ ๋ฒกํ„ฐ๋กœ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Œ) ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฐํฌํŒ์˜ ๊ฐ ์ปค๋ฐ‹์— ๋Œ€ํ•œ ์ฒ ์ €ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ •์  ๋ถ„์„ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ฐ์‚ฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๊ฐ€ ํ˜•์‹ํ™”๋˜๊ณ  ๋ฌธ์„œํ™”๋ฉ๋‹ˆ๋‹ค.

์ด์Šˆ, ์ทจ์•ฝ์  ๋“ฑ์˜ ํด๋ž˜์Šค๋ฅผ ์ฐจ๋‹จํ•˜๊ธฐ ์œ„ํ•œ ๋‚ด์žฅ ๋ฉ”์†Œ๋“œ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™”๋กœ, ์œ„ํ—˜ํ•œ PHP mail() ํ•จ์ˆ˜ ์‚ฌ์šฉ, XSS ๊ณต๊ฒฉ ์ค‘ ์ฟ ํ‚ค ๋‚ด์šฉ ์œ ์ถœ, ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ ๋กœ๋“œ๋กœ ์ธํ•œ ๋ฌธ์ œ(์˜ˆ: ํ˜•์‹) ํŒŒ), ํ’ˆ์งˆ์ด ์ข‹์ง€ ์•Š์€ ๋‚œ์ˆ˜ ์ƒ์„ฑ ๋ฐ ์น˜ํ™˜ ์ž˜๋ชป๋œ XML ๊ตฌ์„ฑ.

PHP ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋ชจ๋“œ๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

  • ์ฟ ํ‚ค์— ๋Œ€ํ•ด "secure" ๋ฐ "samesite"(CSRF ๋ณดํ˜ธ) ํ”Œ๋ž˜๊ทธ๋ฅผ ์ž๋™์œผ๋กœ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์•”ํ˜ธํ™” ์ฟ ํ‚ค;
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ณต๊ฒฉ ๋ฐ ์†์ƒ ํ”์ ์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ์ œ๊ณต ๊ทœ์น™ ์„ธํŠธ
  • "์˜ ๊ฐ•์ œ ์ „์—ญ ํ™œ์„ฑํ™”์—„๊ฒฉํ•œ"(์˜ˆ๋ฅผ ๋“ค์–ด ์ •์ˆ˜ ๊ฐ’์„ ์ธ์ˆ˜๋กœ ๊ธฐ๋Œ€ํ•  ๋•Œ ๋ฌธ์ž์—ด์„ ์ง€์ •ํ•˜๋ ค๋Š” ์‹œ๋„๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.) ์œ ํ˜• ์กฐ์ž‘;
  • ๊ธฐ๋ณธ ์ฐจ๋‹จ ํ”„๋กœํ† ์ฝœ ๋ž˜ํผ (์˜ˆ: ๋ช…์‹œ์ ์ธ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ๋ฅผ ํ†ตํ•ด "phar://" ๊ธˆ์ง€)
  • ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ํŒŒ์ผ ์‹คํ–‰ ๊ธˆ์ง€
  • ํ‰๊ฐ€๋ฅผ ์œ„ํ•œ ํ‘๋ฐฑ ๋ชฉ๋ก;
  • ์‚ฌ์šฉํ•  ๋•Œ TLS ์ธ์ฆ์„œ ํ™•์ธ์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    ๊ณฑ์Šฌ ๊ณฑ์Šฌํ•˜๋‹ค;

  • ์ง๋ ฌํ™”๋œ ๊ฐ์ฒด์— HMAC๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์—ญ์ง๋ ฌํ™”๊ฐ€ ์›๋ž˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์š”์ฒญ ๋กœ๊น… ๋ชจ๋“œ;
  • XML ๋ฌธ์„œ์˜ ๋งํฌ๋ฅผ ํ†ตํ•ด libxml์˜ ์™ธ๋ถ€ ํŒŒ์ผ ๋กœ๋“œ๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.
  • ์—…๋กœ๋“œ๋œ ํŒŒ์ผ์„ ํ™•์ธํ•˜๊ณ  ์Šค์บ”ํ•˜๊ธฐ ์œ„ํ•ด ์™ธ๋ถ€ ํ•ธ๋“ค๋Ÿฌ(upload_validation)๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ธฐ๋Šฅ

์ด ํ”„๋กœ์ ํŠธ๋Š” ํ”„๋ž‘์Šค์˜ ๋Œ€๊ทœ๋ชจ ํ˜ธ์ŠคํŒ… ์šด์˜์—…์ฒด ์ค‘ ํ•˜๋‚˜์˜ ์ธํ”„๋ผ์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง€๊ณ  ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ช…์‹œ๋˜์–ด์žˆ๋‹คSnuffleupagus๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์˜ฌํ•ด Drupal, WordPress ๋ฐ phpBB์—์„œ ํ™•์ธ๋œ ๋งŽ์€ ์œ„ํ—˜ํ•œ ์ทจ์•ฝ์ ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉด Magento ๋ฐ Horde์˜ ์ทจ์•ฝ์ ์„ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
"sp.readonly_exec.enable()".

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€