RubyGems.org ํจํค์ง ์ ์ฅ์์์ ์ฌ๊ฐํ ์ทจ์ฝ์ (CVE-2022-29176)์ด ํ์ธ๋์์ต๋๋ค. ์ด ์ทจ์ฝ์ ์ ํตํด ์ ์ ํ ๊ถํ ์์ด ํฉ๋ฒ์ ์ธ ํจํค์ง๋ฅผ ๋์ด๋ด๊ณ ๊ทธ ์๋ฆฌ์ ๋ก๋ํ์ฌ ์ ์ฅ์์ ์๋ ๋ค๋ฅธ ์ฌ๋์ ํจํค์ง๋ฅผ ๊ต์ฒดํ ์ ์์ต๋๋ค. ์ด๋ฆ๊ณผ ๋ฒ์ ๋ฒํธ๊ฐ ๊ฐ์ ๋ค๋ฅธ ํ์ผ.
์ทจ์ฝ์ ์ ์ฑ๊ณต์ ์ผ๋ก ์ ์ฉํ๋ ค๋ฉด ๋ค์ ์ธ ๊ฐ์ง ์กฐ๊ฑด์ ์ถฉ์กฑํด์ผ ํฉ๋๋ค.
- ๊ณต๊ฒฉ์ ์ด๋ฆ์ ํ์ดํ์ด ํฌํจ๋ ํจํท์์๋ง ์ํ๋ ์ ์์ต๋๋ค.
- ๊ณต๊ฒฉ์๋ ํ์ดํ ๋ฌธ์ ์์ ์ด๋ฆ์ ์ผ๋ถ๊ฐ ํฌํจ๋ gem ํจํค์ง๋ฅผ ๋ฐฐ์นํ ์ ์์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, "rails-html-sanitizer" ํจํค์ง์ ๋ํ ๊ณต๊ฒฉ์ด๋ผ๋ฉด ๊ณต๊ฒฉ์๋ ์์ ์ "rails-html" ํจํค์ง๋ฅผ ์ ์ฅ์์ ๋ฐฐ์นํด์ผ ํฉ๋๋ค.
- ๊ณต๊ฒฉ๋ฐ๋ ํจํค์ง๋ ์ง๋ 30์ผ ์ด๋ด์ ์์ฑ๋์๊ฑฐ๋ 100์ผ ๋์ ์ ๋ฐ์ดํธ๋์ง ์์์ด์ผ ํฉ๋๋ค.
์ด ์ทจ์ฝ์ ์ ํ์ดํ ๋ค์ ์ด๋ฆ ๋ถ๋ถ์ ํ๋ซํผ ์ด๋ฆ์ผ๋ก ํด์ํ๋ "yank" ์์ ํธ๋ค๋ฌ์ ์ค๋ฅ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค. ์ด๋ก ์ธํด ์ด๋ฆ ๋ถ๋ถ๊ณผ ์ผ์นํ๋ ์ธ๋ถ ํจํค์ง ์ญ์ ๋ฅผ ์์ํ ์ ์๊ฒ ๋์์ต๋๋ค. ํ์ดํ ์์. ํนํ "yank" ํธ๋ค๋ฌ ์ฝ๋์์๋ 'find_by!(full_name: "#{rubygem.name}-#{slug}")" ํธ์ถ์ ์ฌ์ฉํ์ฌ ํจํค์ง๋ฅผ ์ฐพ์ ๋ฐ๋ฉด "slug" ๋งค๊ฐ๋ณ์๋ ์ ๊ฑฐํ ๋ฒ์ ์ ๊ฒฐ์ ํ๋ ค๋ฉด ํจํค์ง ์์ ์๊ฐ ํ์ํฉ๋๋ค. "rails-html" ํจํค์ง์ ์์ ์๋ ๋ฒ์ "1.2.3" ๋์ "sanitizer-1.2.3"์ ์ง์ ํ ์ ์์ผ๋ฉฐ, ์ด๋ก ์ธํด ๋ค๋ฅธ ์ฌ๋์ ํจํค์ง "rails-html-sanitizer-1.2.3"์ ์์ ์ด ์ ์ฉ๋ฉ๋๋ค. ".
์ด ๋ฌธ์ ๋ ์๋ ค์ง ์คํ ์์ค ํ๋ก์ ํธ์์ ๋ณด์ ๋ฌธ์ ๋ฅผ ์ฐพ๊ธฐ ์ํ HackerOne ํฌ์๊ธ ํ๋ก๊ทธ๋จ์ ์ผ๋ถ๋ก ๋ณด์ ์ฐ๊ตฌ์์ ์ํด ํ์ธ๋์์ต๋๋ค. ์ด ๋ฌธ์ ๋ 5์ 18์ผ RubyGems.org์์ ํด๊ฒฐ๋์์ผ๋ฉฐ ๊ฐ๋ฐ์์ ๋ฐ๋ฅด๋ฉด ์ง๋ XNUMX๊ฐ์ ๋์ ๋ก๊ทธ์์ ์ทจ์ฝ์ ์ ์ฉ ํ์ ์ ์์ง ์๋ณํ์ง ๋ชปํ์ต๋๋ค. ๋์์, ์ง๊ธ๊น์ง๋ ํ๋ฉด์ ์ธ ๊ฐ์ฌ๋ง ์ค์๋์์ผ๋ฉฐ ์์ผ๋ก๋ ๋ณด๋ค ์ฌ์ธต์ ์ธ ๊ฐ์ฌ๊ฐ ๊ณํ๋์ด ์์ต๋๋ค.
ํ๋ก์ ํธ๋ฅผ ํ์ธํ๋ ค๋ฉด Gemfile.lock ํ์ผ์์ ์์
๋ด์ญ์ ๋ถ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ฆ๊ณผ ๋ฒ์ ์ด ๋ณด์กด๋๊ฑฐ๋ ํ๋ซํผ์ด ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ(์: gemname์ด ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ) ์
์์ ์ธ ํ๋์ด ๋ํ๋ฉ๋๋ค. -1.2.3 ํจํค์ง๊ฐ gemname-1.2.3-java๋ก ์
๋ฐ์ดํธ๋์์ต๋๋ค. ์ง์์ ์ธ ํตํฉ ์์คํ
์์ ๋๋ ํ๋ก์ ํธ๋ฅผ ๊ฒ์ํ ๋ ์จ๊ฒจ์ง ํจํค์ง ๋์ฒด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ๋ฐ์๋ ์ข
์์ฑ์ ์์ ํ๊ธฐ ์ํด "-frozen" ๋๋ "-deployment" ์ต์
๊ณผ ํจ๊ป Bundler๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ถ์ฒ : opennet.ru