ํ๋ ๊ธฐ์ ์ ํ๋ฆฌ์ผ์ด์ ํฌํธํด๋ฆฌ์ค๋ iOS ํ๋ฐํธ์๋, ๊ณต์ ๋ชจ๋ฐ์ผ ํ๋ ์์ํฌ, ์๋ฒ ์ธก ์๋น์ค ๋ฑ ๋ค์ํ ๋ถ์ผ์์ Swift๋ฅผ ์ ์ ๋ ๋ง์ด ํ์ฉํ๊ณ ์์ต๋๋ค. Swift ๋์ ์ด ๊ฐ๋ณ ์ฑ ๊ฐ๋ฐํ์ ๋์ด ๊ท์ ๋์ ๋ฐ ๊ณ ๊ฐ ์ ์ ์์ญ์ผ๋ก ํ๋๋จ์ ๋ฐ๋ผ, ์ ์ ์ฝ๋ ๋ถ์์ ๊ฐ๋ฐ์ ํธ์๋ฅผ ์ํ ๋๊ตฌ๊ฐ ์๋ ๋ณด๋ค ๊ด๋ฒ์ํ ์ ์ด ์ฒด๊ณ์ ์ผ๋ถ๊ฐ ๋๊ณ ์์ต๋๋ค. Swift์์์ ์ฝ๋ ์ค์บ๋์ ์ด๊ธฐ์ข ์คํ ์ ๋ฐ์ ๊ฑธ์ณ ์ ์ฉ๋๋ ์ํคํ ์ฒ ๊ฑฐ๋ฒ๋์ค ๋ชจ๋ธ, ๊ตฌ์กฐํ๋ ์ํ ํ๊ฐ, ๊ทธ๋ฆฌ๊ณ ๊ธฐ์ IT ์ํ ๊ด๋ฆฌ ํ๋ก์ธ์ค์ ์ผ๊ด์ฑ์ ์ ์งํด์ผ ํฉ๋๋ค.
Swift ์ํ๊ณ๋ ์ข ์ข ๋ค์ดํฐ๋ธ ๋ชจ๋ฐ์ผ ๊ตฌ์ฑ ์์, ํ์ฌ SDK ๋ฐ ๋ฐฑ์๋ ํตํฉ์ ๊ฒฐํฉํ์ฌ ๊ธฐ์กด์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ ๊ฐ์ ์ ๋์ด์๋ ์ทจ์ฝ์ ์ ๋ฐ์์ํต๋๋ค. Swift๋ ํน์ ์ ํ์ ๋ฐํ์ ์ค๋ฅ๋ฅผ ์ค์ฌ์ฃผ์ง๋ง, ๋ ผ๋ฆฌ์ ์ค๋ฅ, ์์ ํ์ง ์์ ์ข ์์ฑ ์ฌ์ฉ ๋๋ ๊ตฌ์ฑ ์ทจ์ฝ์ ์ ์์ ํ ์ ๊ฑฐํ์ง๋ ๋ชปํฉ๋๋ค. ๋ฐ๋ผ์ Swift์ ๋ํ ์ํฐํ๋ผ์ด์ฆ ์ ์ ๋ถ์์ ์์ค ์ฝ๋ ๊ฒ์ฌ, ์ํํธ์จ์ด ๊ตฌ์ฑ ๋ถ์ ๋ฐ SBOM(์ํํธ์จ์ด ๊ตฌ์ฑ ๋ชฉ๋ก) ๊ฐ์์ฑ์ ์ฐ๊ณํ์ฌ ์ํ ์ ํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.
Swift ์ฝ๋ ์ํ ๋ถ์
Smart TS XL์ ์คํ ๊ฒฝ๋ก์ ์ํคํ ์ฒ ์ํ ๋ ธ์ถ ๊ฐ์ ์๊ด๊ด๊ณ๋ฅผ ํ์ ํ์ฌ Swift ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ํฅ์์ํต๋๋ค.
์ง๊ธ ํ์์ง์์ ํตํฉ ํ์ดํ๋ผ์ธ์ ์ด๋ฌํ ์ํฉ์ ๋์ฑ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค. Swift ์ฝ๋๋ ์๋ํ๋ ๋ฐฐํฌ ์ฒด์ธ ๋ด์์ ๋น๋, ํ ์คํธ ๋ฐ ์๋ช ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฉฐ, ์ด๋ฌํ ์ฒด์ธ์๋ ํ์ ์ ์ธ ํ์ง ๊ฒ์ดํธ๊ฐ ํ์ํฉ๋๋ค. ์ผ๊ด์ฑ ์๋ ๊ท์น ์ ์ฉ, ๊ณผ๋ํ ์คํ ๋๋ ์ทจ์ฝํ ์ฐ์ ์์ ๋ ผ๋ฆฌ๋ ๋ฐฐํฌ ์๋๋ฅผ ์ ํ์ํค๊ณ ๋ฆด๋ฆฌ์ค ์ค๋น ์ํ์ ๋ํ ์ ๋ขฐ๋๋ฅผ ๋จ์ด๋จ๋ฆด ์ ์์ต๋๋ค. CI/CD ํ์ดํ๋ผ์ธ์ ์ ์ ๋ถ์์ ํตํฉํ๋ ๊ฒ๊ณผ ์ ์ฌํ ๊ตฌ์กฐํ๋ ์ ๊ทผ ๋ฐฉ์์ ๋จ์ํ ๊ท์น ๊ฐ์๋ฅผ ์ธ๋ ๊ฒ๋ณด๋ค ์ ํธ ํ์ง๊ณผ ์ ์ฑ ์ ์ฉ ๊ท์จ์ด ๋ ์ค์ํ๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค.
ํ์ด๋ธ๋ฆฌ๋ ์ํฐํ๋ผ์ด์ฆ ์ํคํ ์ฒ๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๋์ฑ ์ฌํ์ํต๋๋ค. Swift ๊ธฐ๋ฐ ํ๋ฐํธ์๋๋ ๊ณผ๊ฑฐ์ ๊ธฐ์ ์ ๋ถ์ฑ๋ ํจ์น๋์ง ์์ ์ทจ์ฝ์ ์ ์ง๋ ๋ ๊ฑฐ์ ์๋น์ค, ๋ถ์ฐ API ๋ฐ ๋ฐ์ดํฐ ํ๋ซํผ๊ณผ ์ํธ ์์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ์ ์ ์ฝ๋ ๋ถ์์ Swift ์ ์ฅ์๋ฅผ ๊ณ ๋ฆฝ๋ ์ฝ๋ ์ฌ์ผ๋ก ์ทจ๊ธํ๋ ๋์ , ํ๋ซํผ ๊ฐ ๋ ธ์ถ, ์ข ์์ฑ ์ํ ๋ฐ ํ๋ํ ์ ์ฝ ์กฐ๊ฑด์ ๊ณ ๋ คํ๋ ๊ณ์ธตํ๋ ๊ฑฐ๋ฒ๋์ค ํ๋ ์์ํฌ ๋ด์ ์์นํด์ผ ํฉ๋๋ค.
Swift์ Smart TS XL์ ์ฌ์ฉํ ์ ์ ์ฝ๋ ๋ถ์ ๋ฐ ์ํ ์๊ด๊ด๊ณ ๋ถ์
Swift ํ๊ฒฝ์์์ ์ ์ ๋ถ์์ ์ข ์ข ์ํคํ ์ฒ ์ปจํ ์คํธ๊ฐ ๋ถ์กฑํ ๊ท์น ๊ธฐ๋ฐ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํฉ๋๋ค. ๊ตฌ๋ฌธ ์ ํจ์ฑ ๊ฒ์ฌ, ๋ณต์ก์ฑ ์ธก์ ๋ฐ ๋ณด์ ์ฝ๋ฉ ๊ฒ์ฌ๋ ํ์ํ ๊ฐ์์ฑ์ ์ ๊ณตํ์ง๋ง, ํน์ ๋ฌธ์ ๊ฐ ๋ชจ๋, ์๋น์ค ๋ฐ ๋ฐํ์ ๊ฒฝ๋ก ์ ๋ฐ์ ๊ฑธ์ณ ์ด๋ป๊ฒ ์ ํ๋๋์ง๋ ์ค๋ช ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. Smart TS XL์ ๊ตฌ์กฐ์ ์ฝ๋ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์คํ ์ ๋ณด๋ฅผ ๊ณ ๋ คํ ์ข ์์ฑ ๋งคํ ๋ฐ ๊ณ์ธต ๊ฐ ์ถ์ ์ฑ ๋ชจ๋ธ๊ณผ ์ฐ๊ด์์ผ ๊ธฐ์กด ์ ์ ๊ฒ์ฌ์ ํ๊ณ๋ฅผ ๋ฐ์ด๋์ต๋๋ค.
๊ธฐ์ ํ๊ฒฝ์ Swift ๋ฐฐํฌ, ํนํ iOS ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์๋ฒ ์ธก Swift ์๋น์ค๋ฅผ ๊ฒฐํฉํ๋ ํ๊ฒฝ์์๋ ์ํ์ด ๋จ์ผ ํ์ผ์๋ง ๊ตญํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋๋ญ ๋๋ค. ์ทจ์ฝ์ ๊ณผ ํ์ง ์ ํ๋ ์ํธ ์์ฉ ํจํด, ๊ณต์ ๋ฐ์ดํฐ ๋ชจ๋ธ, ๊ฐ์ ํธ์ถ ์ฒด์ธ ๋ฑ์ ํตํด ๋ฐ์ํฉ๋๋ค. Smart TS XL์ ํ๋ ๋ฐ ๊ตฌ์กฐ์ ์๊ด๊ด๊ณ๋ฅผ ๋์ ํ์ฌ ๊ฐ๋ณ์ ์ธ ๊ท์น ์๋ฐ์ ๋์ด ์ฐ์ ์์ ๊ฒฐ์ ์ ์ ํ๋๋ฅผ ๋์ฌ์ค๋๋ค. Smart TS XL์ ๋ถ์์ ์ญํ ์ ์ ์ ์ฝ๋ ๋ถ์์ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋ผ ๋ณด์ํ๋ ๊ฒ์ ๋๋ค.
Swift ๋ชจ๋ ๊ฐ ์คํ ๊ฒฝ๋ก ์๊ด๊ด๊ณ
Swift ํ๋ก์ ํธ๋ ์ข ์ข UI ๊ตฌ์ฑ ์์, ๋๋ฉ์ธ ์๋น์ค, ๋คํธ์ํน ๊ณ์ธต ๋ฐ ์๊ตฌ ์ ์ฅ ๋ชจ๋์ ํฌํจํ๋ ๊ณ์ธตํ ์ํคํ ์ฒ๋ฅผ ๊ฐ์ต๋๋ค. ๊ธฐ์กด์ ์ ์ ๋ถ์๊ธฐ๋ ๊ฐ๋ณ ํ์ผ ๋ด์ ๊ท์น ์๋ฐ์ ํ์ํ์ง๋ง, ์ด๋ฌํ ์๋ฐ์ด ๋ ๋์ ์คํ ํ๋ฆ์ ์ด๋ป๊ฒ ์ํฅ์ ๋ฏธ์น๋์ง ์ผ๊ด๋๊ฒ ๋ชจ๋ธ๋งํ์ง ๋ชปํฉ๋๋ค.
Smart TS XL์ ๋ค์์ ์ง์ํฉ๋๋ค.
- Swift ํจํค์ง ์ ๋ฐ์ ๊ฑธ์น ๋ชจ๋ ๊ฐ ํธ์ถ ๊ทธ๋ํ ์ฌ๊ตฌ์ฑ
- UI ์ง์ ์ ์์ ๋ฐฑ์๋ ํธ์ถ ๋ก์ง๊น์ง์ ์ถ์ ์ฑ
- ๋น๋๊ธฐ ์คํ ์ฒด์ธ ๋ฐ ์ฝ๋ฐฑ ์ ํ ๋งคํ
- ์ ์ ๊ท์น ์์ง์ด ๋ ๋ฆฝ์ ์ธ ์ด๋ฒคํธ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๊ฐ์ ๋ ธ์ถ ๊ฒฝ๋ก ์๋ณ
์ด๋ฌํ ์คํ ์ํฉ ์ธ์ ๋ชจ๋ธ๋ง์ ๊ฐ๋ณ์ ์ผ๋ก๋ ์ฌ์ํด ๋ณด์ด์ง๋ง ์ํฅ๋ ฅ์ด ํฐ ๊ฑฐ๋ ํ๋ฆ ๋ด์์ ์์ฉํ๋ ๋ฐ๊ฒฌ ์ฌํญ์ ๊ณผ์ํ๊ฐํ ์ํ์ ์ค์ฌ์ค๋๋ค.
์์กด์ฑ ๋ฒ์ ๋ฐ ์ ์ด์ ์ํ ๊ฐ์์ฑ
Swift ์ํ๊ณ๋ ํจํค์ง ๊ด๋ฆฌ์์ ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌ๊ฒ ์์กดํฉ๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์์ ํ์ง ์์ API ์ฌ์ฉ์ด๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ํธ์ถ์ ์๋ณํ ์ ์์ง๋ง, ์์กด์ฑ์ด ๊น์ด ์ทจ์ฝ์ ์ ์ค์ ํ๊ธ ํจ๊ณผ๋ฅผ ํ์ ํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
Smart TS XL์ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ํตํด ๊ฐ์์ฑ์ ํฅ์์ํต๋๋ค.
- Swift ํจํค์ง ๊ด๋ฆฌ์ ๊ณ์ธต ๊ตฌ์กฐ ์ ๋ฐ์ ๊ฑธ์น ์ ์ด์ ์ข ์์ฑ ๋งคํ
- ์ข ์์ฑ ์ฌ์ฉ๋๊ณผ ์คํ ๋น๋ ๋ฐ ๋ฐํ์ ์ค์๋ ๊ฐ์ ์๊ด๊ด๊ณ
- ์ทจ์ฝํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๋ฐ์ดํธ๋๊ฑฐ๋ ๊ต์ฒด๋ ๋์ ๊ตฌ์กฐ์ ์ํฅ ๋ถ์
- ์ ์ฅ์ ์ ๋ฐ์ ๊ฑธ์น ๊ณต์ ์ข ์์ฑ ๋ ธ์ถ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ํ ํด๋ฌ์คํฐ๋ง
์ด ๋ชจ๋ธ์ ํตํด ๊ฑฐ๋ฒ๋์ค ํ์ ์ด๋ก ์ ๋ ธ์ถ๊ณผ ๊ตฌ์กฐ์ ์ผ๋ก ๋ด์ฌ๋ ์์กด์ฑ ์ํ์ ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
๋๊ตฌ ๊ฐ ์๊ด๊ด๊ณ ๋ฐ ์ ํธ ๊ฐ์
๊ธฐ์ ๋ค์ ์ผ๋ฐ์ ์ผ๋ก ๋จ์ผ ๋ถ์ ๋ฉ์ปค๋์ฆ์๋ง ์์กดํ์ง ์์ต๋๋ค. Swift ์ฝ๋๋ฒ ์ด์ค๋ ๋ณดํต ๋ฆฐํฐ, SAST ๋๊ตฌ, SCA ํ๋ซํผ, ํ์ดํ๋ผ์ธ ์์ค์ ์ ์ฑ ์์ง ๋ฑ์ ์ฌ์ฉํ์ฌ ๊ฒ์ฌํฉ๋๋ค. ๊ฐ ๋๊ตฌ๋ ์๋ก ์ค๋ณต๋๊ฑฐ๋ ๋ชจ์๋๋ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ๋ ๋ ๋ฆฝ์ ์ธ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค.
Smart TS XL์ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ ํธ ํ์ง์ ํฅ์์ํต๋๋ค.
- ์ ์ ๋ถ์ ๋ฐ ๊ตฌ์ฑ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ข ํฉํฉ๋๋ค.
- ๊ตฌ์กฐ์ ์ผ๋ก ๊ด๋ จ๋ ๋ฌธ์ ์ ์ค๋ณต ์ ๊ฑฐ
- ์ํคํ ์ฒ ๊ฒฝ๊ณ ๋ด์์ ๊ท์น ์๋ฐ ์ฌํญ์ ๋งฅ๋ฝํํ๊ธฐ
- ๊ฐ๋ณ์ ์ธ ์ฌ๊ฐ๋๋ณด๋ค๋ ์ฌ๋ฌ ๋๊ตฌ์์ ๊ณตํต์ ์ผ๋ก ๋ํ๋๋ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐ์ ์์๋ฅผ ์ ํฉ๋๋ค.
์ด๋ฌํ ์ํธ ์๊ด ๋ถ์ ๊ธฐ๋ฅ์ ๊ณผ๋ํ ๊ฒฝ๊ณ ๋ก ์ธํด ๋ฒ ์งํ ๊ท์จ์ด ์ ํ๋๋ CI ํ๊ฒฝ์์ ์ ํธ ๋ ์ก์๋น๋ฅผ ํฅ์์ํต๋๋ค.
๊ตฌ๋ฌธ ์์ค ๊ฒ์ฌ๋ฅผ ๋์ด์ ๋์ ๊ฐ์์ฑ ํ๋ณด
Swift์ ํ์ ์์ ์ฑ๊ณผ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ํน์ ๊ฒฐํจ ์ ํ์ ์ค์ฌ์ฃผ์ง๋ง, ์์ ํ์ง ์์ ๋ ผ๋ฆฌ ๊ตฌ์กฐ๋ ์๋ชป ๊ตฌ์ฑ๋ ํตํฉ์ ์์ ํ ์ ๊ฑฐํ์ง๋ ๋ชปํฉ๋๋ค. ์ ์ ๊ท์น ์์ง์ ์ฃผ๋ก ๊ตฌ๋ฌธ ๋ฐ ์๋ฏธ ๋ถ์ ๊ณ์ธต์์ ์๋ํฉ๋๋ค.
Smart TS XL์ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ํตํด ํ๋ ๊ฐ์์ฑ์ ์ ๊ณตํฉ๋๋ค.
- ๊ธฐ๋ฅ ๊ฒฝ๊ณ๋ฅผ ๋๋๋๋ ๋ฐ์ดํฐ ํ๋ฆ ๋งคํ
- ํต์ฌ ๋ฐ์ดํฐ ๋ณํ ์ง์ ์๋ณ
- ์ค๋ฅ ์ฒ๋ฆฌ ์ ํ ์ฌ์ฌ ๋ถ์
- ๋ฏผ๊ฐํ ์ฐ์ฐ์ ์ํฅ์ ๋ฏธ์น๋ ์กฐ๊ฑด ๋ถ๊ธฐ์ ์๊ฐํ
์ด๋ฌํ ํ๋์ ๊ด์ ์ ์ ์ ์ธ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ด์ ์ํ ๋ชจ๋ธ๊ณผ ์ฐ๊ณํ๊ณ ์ง๋ฐฐ๊ตฌ์กฐ ๊ฐ๋ ์ ๊ฐํํฉ๋๋ค.
์ํ ์ฐ์ ์์ ์ค์ ๋ฐ ๊ฑฐ๋ฒ๋์ค ์ ๋ ฌ
์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ ์ฌ๊ฐ๋ ์์ค ๋๋ ๊ท์น ๋ฒ์ฃผ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐ์ ์์๊ฐ ์ง์ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ํฐํ๋ผ์ด์ฆ Swift ๋ฐฐํฌ ํ๊ฒฝ์์ ์ํคํ ์ฒ ๊ฐ์ค์น๋ฅผ ๊ณ ๋ คํ์ง ์์ ์ฌ๊ฐ๋๋ง์ผ๋ก๋ ๋ฌธ์ ํด๊ฒฐ ๊ณํ์ ์๊ณกํ ์ ์์ต๋๋ค. ๋น๋ฒํ๊ฒ ์คํ๋๋ ์ฝ๋ ๊ฒฝ๋ก์์ ๋ฐ๊ฒฌ๋๋ ์ฌ๊ฐ๋๊ฐ ๋ฎ์ ๋ฌธ์ ๋ ์ฌ์ฉ๋์ง ์๋ ๋ชจ๋์์ ๋ฐ๊ฒฌ๋๋ ์ฌ๊ฐ๋๊ฐ ๋์ ๋ฌธ์ ๋ณด๋ค ์ด์์ ๋ ํฐ ์ํ์ ์ด๋ํ ์ ์์ต๋๋ค.
Smart TS XL์ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ฑฐ๋ฒ๋์ค ์ ๋ ฌ์ ์ง์ํฉ๋๋ค.
- ์คํ ๋น๋ ๋ฐ ์ํคํ ์ฒ ์ค์ฌ์ฑ์ ๋ฐ๋ผ ๊ฒฐ๊ณผ์ ๊ฐ์ค์น ๋ถ์ฌ
- ๊ตฌ์กฐ์ ์ํ ์งํ๋ฅผ ๊ฐ์ ๋์๋ณด๋์ ํตํฉํ๊ธฐ
- ํตํฉ ์ํ ๋งคํ์ ํตํด ์ด์ฌํ ๋ณด๊ณ ์ง์
- CI ํ์ดํ๋ผ์ธ ๋ด์์ ์ ์ฑ ๊ธฐ๋ฐ ๊ฒ์ดํ ๊ฒฐ์ ํ์ฑํ
Smart TS XL์ ๊ตฌ์กฐ์ , ํ๋์ , ๊ทธ๋ฆฌ๊ณ ๋๊ตฌ ๊ฐ ์๊ด๊ด๊ณ๋ฅผ ๊ฒฐํฉํ์ฌ Swift ์ ์ ์ฝ๋ ๋ถ์์ ๋ถ์ ๊ธฐ๋ฐ์ ๊ฐํํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋ ํ์ง ๋ฐ ๋ณด์ ์ค์บ๋ ๋ฐฉ์์ ๊ท์น ์ด๊ฑฐ์์ ๊ธฐ์ ์ํคํ ์ฒ ๋ด์ ๋งฅ๋ฝ์ ๋ง๋ ์ํ ์ธํ ๋ฆฌ์ ์ค๋ก ์ฌ๊ตฌ์ฑํฉ๋๋ค.
Swift ์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ๋ฅผ ํ์ฉํ ๊ธฐ์ CI ๊ฒ์ดํธํคํ ๋ฐ ํ์ง ๊ด๋ฆฌ
๊ธฐ์ ํ๊ฒฝ์์ Swift ๋์ ์ ๊ณ ๋ฆฝ๋ ๋ชจ๋ฐ์ผ ๊ฐ๋ฐ ํ์์ ๊ณต์ ํ๋ ์์ํฌ, ๋ฐฑ์๋ ์๋น์ค ๋ฐ ๋ถ์ฐ API ํตํฉ์ ํฌํจํ๋ ํฌ๋ก์ค ํ๋ซํผ ์ํคํ ์ฒ๋ก ํ์ฅ๋์์ต๋๋ค. Swift ์ฝ๋๊ฐ ๊ท์ ๋ ์ํฌํ๋ก ๋ฐ ๊ณ ๊ฐ ์ ์ ๊ฑฐ๋ ๊ฒฝ๋ก์ ์ผ๋ถ๊ฐ ๋จ์ ๋ฐ๋ผ ์ ์ ์ฝ๋ ๋ถ์์ ๊ฐ๋ฐ์ ์ค์ฌ์ ๋ฆฐํ ์์ CI ๋ฐ ๋ฆด๋ฆฌ์ค ํ์ดํ๋ผ์ธ์ ๋ด์ฅ๋ ๊ฐ์ ์ ์ธ ๊ฑฐ๋ฒ๋์ค ๋ฉ์ปค๋์ฆ์ผ๋ก ์ ํ๋๊ณ ์์ต๋๋ค.
์ํฐํ๋ผ์ด์ฆ Swift ์์คํ ์ ๋ชจ๋ฐ์ผ ํด๋ผ์ด์ธํธ๊ฐ ๋ ๊ฑฐ์ ๋ฐฑ์๋, ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๋ง์ดํฌ๋ก์๋น์ค ๋ฐ ํ์ฌ SDK์ ์ํธ ์์ฉํ๋ ํ์ด๋ธ๋ฆฌ๋ ํ๊ฒฝ์์ ์ด์๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. Swift ๋ชจ๋์ ์ฝ๋ ํ์ง ๋ฌธ์ ๋ ์ด๋ฌํ ์ํธ ์ฐ๊ฒฐ๋ ๊ณ์ธต ์ ๋ฐ์ ๊ฑธ์ณ ์ด์ ์ค๋ฅ, ์ฑ๋ฅ ์ ํ ๋๋ ๊ท์ ์ค์ ๋ฌธ์ ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ์ ๋ถ์์ ๋ ๋ฆฝ์ ์ธ ํ์ง ๋๊ตฌ๋ก ๊ธฐ๋ฅํ๊ธฐ๋ณด๋ค๋ ์ํคํ ์ฒ ์ถ์ ์ฑ์ ์ง์ํ๊ณ ๋ ๊ด๋ฒ์ํ ์ํฐํ๋ผ์ด์ฆ IT ์ํ ๊ด๋ฆฌ ๊ดํ๊ณผ ์ฐ๊ณ๋์ด์ผ ํฉ๋๋ค.
์ง์์ ํตํฉ ํ์ดํ๋ผ์ธ์ ๊ท์น ์ค์ ์๊ตฌ ์ฌํญ์ ๊ฐํํฉ๋๋ค. Swift ์ ์ฅ์๋ ์๋ํ๋ ์ํฌํ๋ก๋ฅผ ํตํด ๋น๋, ํ ์คํธ ๋ฐ ์๋ช ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฉฐ, ๊ท์น ์๋ฐ์ ๋ฆด๋ฆฌ์ค ์ ๊ฒฉ์ฑ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ผ๊ด์ฑ ์๋ ์ ์ฑ ๊ตฌ์ฑ, ๊ณผ๋ํ ์คํ ๋๋ ์ทจ์ฝํ ์ฐ์ ์์ ๋ชจ๋ธ์ CI ๊ฒ์ดํธํคํ์ ๋ํ ์ ๋ขฐ๋ฅผ ์ฝํ์ํต๋๋ค. CI/CD ํ์ดํ๋ผ์ธ์ ์ ์ ๋ถ์์ ํตํฉํ๋ฉด์ ์ป์ ๊ตํ์ ๊ฒฐ์ ๋ก ์ ๊ท์น ์ค์์ ๊ตฌ์กฐํ๋ ์์ ์ํฌํ๋ก๊ฐ ํ์ฅ ๊ฐ๋ฅํ ๋์ ์ ํต์ฌ์ด๋ผ๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค.
๋ง์ง๋ง์ผ๋ก, Swift ์ํ๊ณ๋ ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจํค์ง ๊ด๋ฆฌ์์ ํฌ๊ฒ ์์กดํ๋๋ฐ, ์ด๋ ์ ์ด์ ์ํ์ ์ด๋ํฉ๋๋ค. ํ์ง ๊ด๋ฆฌ๋ ์คํ์ผ ๊ฒ์ฌ๋ฅผ ๋์ด ์์กด์ฑ ๋ ธ์ถ, ๋ณด์ ๊ท์น ์ ์ฉ ๋ฒ์, ๋ณต์ก์ฑ ์ ์ด๊น์ง ํ์ฅ๋์ด์ผ ํฉ๋๋ค. ์ด๋ฌํ ๊ด๋ฒ์ํ ์์ญ์ ์ํํธ์จ์ด ๊ตฌ์ฑ ๋ถ์ ๋ฐ SBOM(์ํํธ์จ์ด ๊ตฌ์ฑ ๋ชฉ๋ก) ํฌ๋ช ์ฑ๊ณผ ์ฐ๊ด๋์ด Swift ์ฝ๋๋ฒ ์ด์ค๊ฐ ์กฐ์ง์ ๋ณด์ ๊ธฐ์ค ๋ฐ ํ๋ํ ๋ชฉํ์ ๋ถํฉํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
๊ธฐ์ CI ๋ฐ ๊ฑฐ๋ฒ๋์ค๋ฅผ ์ํ Swift ์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ ๋น๊ต
Swift ์ ์ ๋ถ์ ๋๊ตฌ์ ๋ํ ๊ธฐ์ ์ฐจ์์ ํ๊ฐ๋ ๋จ์ํ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ๋น๊ตํ๋ ๊ฒ๋ณด๋ค ์ํคํ ์ฒ๋ฅผ ๋ฉด๋ฐํ ๊ฒํ ํ๋ ๋ฐ ์ค์ ์ ๋์ด์ผ ํฉ๋๋ค. ์ผ๋ถ ์๋ฃจ์ ์ ๊ฐ๋ฐ์ ์ํฌํ๋ก์ ํตํฉ๋๋ ๊ฒฝ๋ ๋ฆฐํฐ ์ญํ ์ ์ฃผ๋ก ์ํํ๋ ๋ฐ๋ฉด, ๋ค๋ฅธ ์๋ฃจ์ ์ ์ ์ฑ ์ํ, ์ทจ์ฝ์ ๋ถ๋ฅ ๋ฐ ๊ท์ ์ค์ ๋ณด๊ณ ๊ธฐ๋ฅ์ ๊ฐ์ถ ์ํฐํ๋ผ์ด์ฆ๊ธ SAST(์ค์ํํธ ์ ์ ๋ถ์) ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ์ฐจ์ด๋ ๋ฐฐํฌ ๋ชจ๋ธ, ํตํฉ ๋ณต์ก์ฑ ๋ฐ ์ฅ๊ธฐ์ ์ธ ๊ฑฐ๋ฒ๋์ค ๊ฐ์น์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
CI ํ๊ฒฝ์์ ๋ฐ๊ฒฌ ์ฌํญ์ด ์ด๋ป๊ฒ ์์ฑ๋๊ณ , ์๊ด๊ด๊ณ๊ฐ ๋ถ์๋๊ณ , ์ ์ฉ๋๋์ง๋ฅผ ๊ณ ๋ คํ์ฌ ๋๊ตฌ๋ฅผ ์ ํํด์ผ ํฉ๋๋ค. ์ํคํ ์ฒ ๋ชจ๋ธ, ๊ท์น ์ฌ์ฉ์ ์ ์ ๊ธฐ๋ฅ์ ๊น์ด, ์ ์ฅ์ ์ ๋ฐ์ ๊ฑธ์น ํ์ฅ์ฑ, ํฐ์ผํ ๋ฐ ๋ณด๊ณ ์์คํ ๊ณผ์ ํตํฉ์ ๋ชจ๋ ์ด์ ๊ฐ๋ฅ์ฑ์ ๊ฒฐ์ ํ๋ ์ค์ํ ์์์ ๋๋ค. ๋ค์ ๋๊ตฌ๋ค์ Swift ๊ธฐ๋ฐ์ ํ์ง ๋ถ์ ๋๊ตฌ๋ถํฐ ๊ท์ ๋ ๋ฐฐํฌ ํ๊ฒฝ์ ์ง์ํ ์ ์๋ ๋ค๊ตญ์ด ์ํฐํ๋ผ์ด์ฆ ๋ณด์ ํ๋ซํผ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ์คํํธ๋ผ์ ๋ณด์ฌ์ค๋๋ค.
ํน์ ๊ธฐ์ ๋ชฉํ์ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค.
- ๊ฐ๋ฐ์ ์์ค์ ๋ฆฐํ
๋ฐ ์คํ์ผ ๊ฐ์ ์ ์ฉ
SwiftLint, SwiftFormat - CI ํ์ดํ๋ผ์ธ์์์ ๋ณด์ ์ค์ฌ ์ ์ ๋ถ์
Checkmarx, Fortify Static Code Analyzer, GitHub Advanced Security - ๋๊ท๋ชจ ํฌํธํด๋ฆฌ์ค ์ ๋ฐ์ ๊ฑธ์น ๋ค๊ตญ์ด ์ํฐํ๋ผ์ด์ฆ ๊ฑฐ๋ฒ๋์ค
์๋ํ๋ธ, ์ปค๋ฒ๋ฆฌํฐ - ๊ฐํธํ ๊ท์น ์ฌ์ฉ์ ์ง์ ๋ฐ DevSecOps ํตํฉ
์ ๊ทธ๋ - iOS ๊ธฐ๊ธฐ์ ์ด์ ์ ๋ง์ถ ์์
์ฉ ๋ณด์ ํ๊ฐ ๋ฐ ๊ท์ ์ค์ ์งํฅ
NowSecure
์ค์ํํธ๋ฆฐํธ
๊ณต์ ์ฌ์ดํธ: https://github.com/realm/SwiftLint
SwiftLint๋ ์คํ ์์ค Swift ๊ธฐ๋ฐ ์ ์ ๋ถ์ ๋๊ตฌ๋ก, ์ฃผ๋ก iOS ๋ฐ ์๋ฒ ์ธก Swift ํ๋ก์ ํธ์์ ์คํ์ผ ์ค์, ์ฝ๋ ํ์ง ์ผ๊ด์ฑ ์ ์ง, ๊ท์น ๊ธฐ๋ฐ ๋ฆฐํ ์ ์ํด ์ค๊ณ๋์์ต๋๋ค. SwiftLint๋ ์์ค ์ฝ๋ ์์ค์์ ์๋ํ๋ ๋ถ์๊ธฐ๋ก, ์ปดํ์ผ๋ฌ์ ํธํ๋๋ ๊ตฌ๋ฌธ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ Swift ํ์ผ์ ๋ถ์ํฉ๋๋ค. ์ฌ์ธต์ ์ธ ํ๋ก์์ ๊ฐ ์ทจ์ฝ์ ๋ชจ๋ธ๋ง์ ์๋ํ์ง ์๊ณ , ๊ตฌ๋ฌธ ํธ๋ฆฌ์ ๊ตฌ์ฑ ๊ฐ๋ฅํ ์คํ์ผ ์ ์ฝ ์กฐ๊ฑด์ ๋ํ ๊ท์น ํ๊ฐ์ ์ค์ ์ ๋ก๋๋ค.
๊ฑด์ถ ๋ชจ๋ธ
SwiftLint๋ Xcode ๋น๋ ๋จ๊ณ, ๋ช
๋ น์ค ์คํ ๋ฐ CI ์คํ๊ธฐ๋ฅผ ํตํด ๊ฐ๋ฐ์ ์ํฌํ๋ก์ ์ง์ ํตํฉ๋ฉ๋๋ค. ์ํคํ
์ฒ๊ฐ ๊ฐ๋ฒผ์ ์ธ๋ถ ๋ณด๊ณ ์์คํ
๊ณผ ํจ๊ป ์ฌ์ฉํ์ง ์๋ ํ ์ค์ ์๋ฒ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ๊ตฌ์ฑ์ ๋ค์์ ํตํด ๊ด๋ฆฌ๋ฉ๋๋ค. .swiftlint.yml ์ ์ฅ์ ๋ด์ ์ ์ฅ๋ ํ์ผ์ ํตํด ํ๋ก์ ํธ๋ณ ๋๋ ์กฐ์ง ์ ์ฒด์ ๊ท์น ํ์คํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๊ท์น ์์ง์ ๋ค์์ ์ง์ํฉ๋๋ค.
- ๊ตฌ๋ฌธ ๊ธฐ๋ฐ ๊ท์น ํ๊ฐ
- ์ ๊ท ํํ์ ๊ธฐ๋ฐ ์ฌ์ฉ์ ์ง์ ๊ท์น ์ ์
- ์ ํ๋ ์๋ฐ ์ฌํญ์ ๋ํ ์๋ ์์
- ์ค ๊ธธ์ด ๋ฐ ํ์ผ ํฌ๊ธฐ์ ๊ฐ์ ์ธก์ ํญ๋ชฉ์ ๋ํ ์๊ณ๊ฐ ๊ตฌ์ฑ
SwiftLint๋ ์์ฒด ์ทจ์ฝ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ง ๊ด๋ฆฌํ์ง ์์ผ๋ฉฐ CVE ๋ถ๋ฅ๋ฅผ ์ํํ์ง ์์ต๋๋ค. SwiftLint์ ๋ฒ์๋ ์์ค ์ฝ๋ ๊ฒ์ฌ ๋ฐ ์คํ์ผ ๋๋ ๊ตฌ์กฐ์ ๊ท์น ์ ํจ์ฑ ๊ฒ์ฌ์ ๊ตญํ๋ฉ๋๋ค.
CI์์์ ์คํ ๋์
CI ํ๊ฒฝ์์ SwiftLint๋ ์ผ๋ฐ์ ์ผ๋ก ๋ณํฉ ์ ๋๋ ๋น๋ ์ ๋จ๊ณ๋ก ์คํ๋ฉ๋๋ค. CI ์์คํ ์์ ๊ฒ์ดํ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๊ตฌ์กฐํ๋ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์คํ ์๊ฐ์ ์ผ๋ฐ์ ์ผ๋ก ์์ธก ๊ฐ๋ฅํ๋ฉฐ ์ ์ฅ์ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์ ํ์ ์ผ๋ก ํ์ฅ๋๋ฏ๋ก ๊ณ ๋น๋ ํ์ดํ๋ผ์ธ์ ์ ํฉํฉ๋๋ค.
ํ์ง๋ง ๊ท์ ์ค์์ ํจ๊ณผ๋ ๊ท์น ๊ตฌ์ฑ์ ์์ฑ๋์ ๋ฌ๋ ค ์์ต๋๋ค. ์ ์คํ๊ฒ ๊ตฌ์ฑ๋ ๊ท์น ์ธํธ๊ฐ ์๋ค๋ฉด ์กฐ์ง์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช์ ์ ์์ต๋๋ค.
- ๊ณผ๋ํ ์คํ์ผ์ ์์
- ์ผ๊ด์ฑ ์๋ ๊ท์น ์ต์ ๊ดํ
- ์ ์ฅ์ ๊ฐ์ ์๋ก ๋ค๋ฅธ ๊ตฌ์ฑ
SwiftLint๋ ๋ณธ์ง์ ์ผ๋ก ์ํ๋๋ ์ํคํ ์ฒ ์ํฅ์ ๋ฐ๋ผ ๋ฐ๊ฒฌ ์ฌํญ์ ์ฐ์ ์์๋ฅผ ์ ํ์ง ์์ต๋๋ค. ๋ชจ๋ ์๋ฐ ์ฌํญ์ ๊ตฌ์ฑ์ ์ ์๋ ์ฌ๊ฐ๋ ์์ค์ ๋ฐ๋ผ ์ฒ๋ฆฌ๋๋ฉฐ, ์ด๋ฌํ ์ฌ๊ฐ๋ ์์ค์ ์ ์ฑ ๋ ์ด์ด๊ฐ ์ถ๊ฐ๋์ง ์๋ ํ ๋๋ถ๋ถ ํ์์ ์ธ ์์ค์ ๊ทธ์นฉ๋๋ค.
๊ธฐ์ ๊ท๋ชจ ํ์ฅ์ ํ์ค
๊ธฐ์ ๊ท๋ชจ์์ SwiftLint๋ ์ฃผ์ ๋ณด์ ์ ์ด๋ณด๋ค๋ ๊ธฐ๋ณธ ์์ ๊ด๋ฆฌ ๋ฉ์ปค๋์ฆ์ผ๋ก ํ์ฉ๋ ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค. SwiftLint๋ ๊ณต์ ํ ํ๋ฆฟ์ด๋ ๋ด๋ถ ํ๋ซํผ ์์ง๋์ด๋ง ๋ฐฉ์์ ํตํด ๊ตฌ์ฑ ํ์ค์ด ๊ด๋ฆฌ๋ ๋์๋ง ์ค์ ์ง์ค์ ๊ฑฐ๋ฒ๋์ค๋ฅผ ์ง์ํฉ๋๋ค.
์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ต์ํ์ ์ธํ๋ผ ๊ตฌ์ถ ๋น์ฉ
- Swift ํ์ ์ํ ๋น ๋ฅธ ์จ๋ณด๋ฉ
- ๊ฐ๋ ฅํ ์ปค๋ฎค๋ํฐ ์ง์๊ณผ ๊ท์น ํ์ฅ์ฑ
- CI์์์ ๊ฒฐ์ ๋ก ์ ์ฑ๋ฅ
๋๊ท๋ชจ ํฌํธํด๋ฆฌ์ค์์๋ ํ๊ณ์ ์ด ๋๋ฌ๋ฉ๋๋ค.
- ํ์ผ ๊ฐ ์ข ์์ฑ ๋ชจ๋ธ๋ง ์์
- ์ ์ด์ ์ข ์์ฑ ์ํ ๊ฐ์์ฑ ์์
- ๊ธฐ๋ณธ ์ทจ์ฝ์ฑ ๋ถ๋ฅ ์ฒด๊ณ ์ ๋ ฌ ์์
- ์ธ๋ถ ๋๊ตฌ ์์ด ๋ณด๊ณ ์๋ฅผ ์ง๊ณํ๋ ๋ฐ์๋ ํ๊ณ๊ฐ ์์ต๋๋ค.
๊ท์ ์ฐ์ ์์ SwiftLint๋ง์ผ๋ก๋ ๋ณด์ ๊ท์ ์ค์ ๊ฒ์ฆ์ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ์ฒด๊ณ์ ์ธ ๊ด๋ฆฌ์ ํ์ํ ๊ฐ์ฌ ๋ณด๊ณ ๋ฐ ์ทจ์ฝ์ ์ ์ ๋งค๊ธฐ๊ธฐ ๊ธฐ๋ฅ์ด ๋ด์ฅ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ฐ๊ฒฉ ํน์ง
SwiftLint๋ ์คํ ์์ค์ด๋ฉฐ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ธฐ์ ๋น์ฉ์ ๊ตฌ์ฑ ๊ด๋ฆฌ, ์ ์ฑ ๊ด๋ฆฌ, CI ํตํฉ ๋ฐ ์ ์ง ๊ด๋ฆฌ ์ค๋ฒํค๋๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก ๋ฐ์ํฉ๋๋ค. ์ค์ ์ง์ค์ ๋์๋ณด๋ ๋๋ ๊ท์ ์ค์ ๋ณด๊ณ ๊ฐ ํ์ํ ์กฐ์ง์ ํ์ฌ ์ง๊ณ ๋๊ตฌ๋ฅผ ํตํฉํด์ผ ํฉ๋๋ค.
๊ตฌ์กฐ์ ํ๊ณ
SwiftLint๋ ๊ตฌ๋ฌธ ๋ฐ ์ง์ญํ๋ ์๋ฏธ๋ก ์ ์์ค์์๋ง ์๋ํฉ๋๋ค. ์ ์ญ ํธ์ถ ๊ทธ๋ํ๋ฅผ ๊ตฌ์ฑํ๊ฑฐ๋, ์ค์ผ ๋ถ์์ ์ํํ๊ฑฐ๋, ๋ฐํ์ ๋๋ฌ ๊ฐ๋ฅ์ฑ์ ํ๊ฐํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ํน์ ์๋ฐ ์ฌํญ์ด ์ค์ํ ํธ๋์ญ์ ๊ฒฝ๋ก ๋ด์ ์๋์ง ๋๋ ์ฌ์ฉ๋์ง ์๋ ์ฝ๋ ๋ถ๊ธฐ ๋ด์ ์๋์ง ํ๋จํ ์ ์์ต๋๋ค.
๊ธฐ์ ์ฉ Swift ์ํ๊ณ์์ SwiftLint๋ ๊ธฐ๋ณธ์ ์ธ ํ์ง ๊ด๋ฆฌ ๊ณ์ธต ์ญํ ์ ํฉ๋๋ค. ์ผ๊ด์ฑ๊ณผ ๊ฐ๋ ์ฑ์ ํฅ์์ํค์ง๋ง, ํฌ๊ด์ ์ธ ๊ฑฐ๋ฒ๋์ค๋ฅผ ๋ฌ์ฑํ๋ ค๋ฉด ๋์ฑ ์ฌ์ธต์ ์ธ ์ ์ ๋ณด์ ํ ์คํธ ๋ฐ ์ข ์์ฑ ๋ถ์ ์๋ฃจ์ ์ผ๋ก ๋ณด์ํด์ผ ํฉ๋๋ค.
์๋ํ๋ธ
๊ณต์ ์ฌ์ดํธ: https://www.sonarsource.com/products/sonarqube/
SonarQube๋ ๊ธฐ์ ์ํํธ์จ์ด ํฌํธํด๋ฆฌ์ค ์ ๋ฐ์ ๊ฑธ์ณ ์ค์ ์ง์ค์ ํ์ง ๊ด๋ฆฌ๋ฅผ ์ํด ์ค๊ณ๋ ๋ค๊ตญ์ด ์ ์ ์ฝ๋ ๋ถ์ ํ๋ซํผ์ ๋๋ค. Swift ๊ธฐ๋ฐ ๋ฆฐํฐ์ ๋ฌ๋ฆฌ SonarQube๋ ์๋ฒ ๊ธฐ๋ฐ ๋ถ์ ๋ฐ ๋ณด๊ณ ์์คํ ์ผ๋ก ์๋ํ๋ฉฐ, ์ ์ฅ์, ์ธ์ด ๋ฐ ํ ์ ๋ฐ์ ๊ฑธ์ณ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ํตํฉํฉ๋๋ค. Swift ์ง์์ ์ฝ๋ ํ์ง ๊ท์น, ๋ณด์ ์ทจ์ฝ์ ๋ฐ ์ ์ง ๊ด๋ฆฌ์ฑ ์งํ๋ฅผ ํ๊ฐํ ์ ์๋ ์ ์ฉ ๋ถ์๊ธฐ๋ฅผ ํตํด ์ ๊ณต๋ฉ๋๋ค.
๊ฑด์ถ ๋ชจ๋ธ
SonarQube๋ ํด๋ผ์ด์ธํธ-์๋ฒ ์ํคํ ์ฒ๋ฅผ ๋ฐ๋ฆ ๋๋ค. CI ์คํ ์ค์ ์ธ์ด๋ณ ์ค์บ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๋ถ์ํ๊ณ , ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ค์ ์ง์ค์ SonarQube ์๋ฒ์ ์ ๋ก๋ํฉ๋๋ค. ์๋ฒ๋ ๊ณผ๊ฑฐ ์ถ์ธ, ํ์ง ๊ฒ์ดํธ, ์ ์ฑ ๊ตฌ์ฑ ๋ฐ ํ๋ก์ ํธ ๊ฐ ๋์๋ณด๋๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
Swift ํ๊ฒฝ์ ๊ฒฝ์ฐ SonarQube๋ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์ ์ ๊ท์น ๊ธฐ๋ฐ ์ฝ๋ ๋ถ์
- OWASP ๋ฒ์ฃผ์ ๋ง์ถ ๋ณด์ ๊ท์น ๊ฒ์ฌ
- ์ฝ๋ ์ค๋ฉ ๋ฐ ์ ์ง๋ณด์์ฑ ํ์ง
- ๋ณต์ก์ฑ ๋ฐ ์ค๋ณต ์ธก์ ์งํ
- ํ์ง ๊ฒ์ดํธ ๊ฐ์ ์คํ ๋ก์ง
์ํฐํ๋ผ์ด์ฆ ์๋์ ์ ํฌํธํด๋ฆฌ์ค ์์ค์ ๊ฑฐ๋ฒ๋์ค, ๋ค์ค ์ง์ ๋ถ์, ๊ทธ๋ฆฌ๊ณ ID ๋ฐ ์ก์ธ์ค ๊ด๋ฆฌ ์์คํ ๊ณผ์ ํตํฉ์ ์ง์ํฉ๋๋ค. ๋ฐ๊ฒฌ ์ฌํญ์ ๋ฒ๊ทธ, ์ทจ์ฝ์ , ๋ณด์ ํซ์คํ, ์ ์ง ๊ด๋ฆฌ ๋ฌธ์ ๋ก ๋ถ๋ฅ๋์ด ์ฒด๊ณ์ ์ธ ๋ฌธ์ ํด๊ฒฐ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
SonarQube๋ ์ธ๋ถ ์ข ์์ฑ ๋ถ์ ๋๊ตฌ์ ํจ๊ป ์ฌ์ฉํ์ง ์๋ ํ ๋ฐ๊ฒฌ ์ฌํญ์ CVE ์๋ณ์์ ์ง์ ๋งคํํ์ง ์์ต๋๋ค. SonarQube์ ๋ณด์ ๊ท์น์ ํ์ฌ ์ทจ์ฝ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณด๋ค๋ ์์ ํ ์ฝ๋ฉ ํจํด์ ์ค์ ์ ๋ก๋๋ค.
CI์์์ ์คํ ๋์
CI ํ์ดํ๋ผ์ธ์์ SonarQube ๋ถ์์ ์ผ๋ฐ์ ์ผ๋ก ์ค์บ๋ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ ๋น๋ ๋จ๊ณ ์ค์ ์คํ๋ฉ๋๋ค. ๋ถ์ ๊ฒฐ๊ณผ๋ ์ค์ ์๋ฒ๋ก ์ ์ก๋๋ฉฐ, ํ์ง ๊ฒ์ดํธ๋ฅผ ํตํด ํฉ๊ฒฉ ๋๋ ๋ถํฉ๊ฒฉ ์ฌ๋ถ๊ฐ ๊ฒฐ์ ๋ฉ๋๋ค. ์ด๋ฌํ ๋ชจ๋ธ์ ๋ถ์ ์คํ๊ณผ ๊ฑฐ๋ฒ๋์ค ํ๊ฐ๋ฅผ ๋ถ๋ฆฌํฉ๋๋ค.
์คํ ํน์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํ ๋ฆฌํ์คํธ์ ๋ํ ์ฆ๋ถ ๋ถ์ ์ง์
- ์ง์ ๋ณ ๋ณด๊ณ
- ์ ์ฑ ๊ธฐ๋ฐ ๋ณํฉ ์ ํ
- ์ฃผ์ CI ํ๋ซํผ๊ณผ์ ํตํฉ
๋๊ท๋ชจ Swift ์ ์ฅ์์์๋ ์ฑ๋ฅ์ด ๋น๊ต์ ์ํธํ๊ฒ ํ์ฅ๋์ง๋ง, ๋ค๊ตญ์ด ๋ชจ๋ ธ๋ ํฌ๋ฅผ ์ฒ๋ฆฌํ ๋๋ ํ๋์ด ํ์ํ ์ ์์ต๋๋ค. ์ค์ ์ง์ค์ ์๋ฒ๋ ๋์ ๋ถ์ ๋ถํ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ ์ ํ๊ฒ ํ๋ก๋น์ ๋๋์ด์ผ ํฉ๋๋ค.
๊ธฐ์ ๊ท๋ชจ ํ์ฅ์ ํ์ค
SonarQube์ ์ฃผ์ ๊ธฐ์ ๊ฐ์น๋ ์ค์ ์ง์ค์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์์ต๋๋ค. Swift ์์คํ ๊ณผ ๋น Swift ์์คํ ์ ๋ฐ์ ๊ฑธ์ณ ํตํฉ ๋์๋ณด๋๋ฅผ ์ ๊ณตํ์ฌ ์ด๊ธฐ์ข ํ๊ฒฝ ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด๋ ๊ฑฐ๋ฒ๋์ค ํ์ค์ ์ง์ํฉ๋๋ค.
์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํฌํธํด๋ฆฌ์ค ์ ๋ฐ์ ๊ฑธ์น ํ์ง ๊ฐ์์ฑ
- ์ญ์ฌ์ ์ถ์ธ ์ถ์
- ํ์ง ๊ด๋ฆฌ ์๋ํ
- ๊ธฐ์ ์ธ์ฆ ๋ฐ ํฐ์ผํ ์์คํ ๊ณผ์ ํตํฉ
ํ์ง๋ง ๊ตฌ์กฐ์ ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
- ์ ํ์ ์ธ ์ฌ์ธต ์ ์ฐจ ๊ฐ ์ทจ์ฝ์ฑ ๋ชจ๋ธ๋ง
- ๋ค์ดํฐ๋ธ ์ ์ด ์ข ์์ฑ ์ทจ์ฝ์ ์ถ์ ๊ธฐ๋ฅ ์์
- ๋ณด์ ๋ถ์ ๊ฒฐ๊ณผ๋ ํ๋ ์คํ ๋ชจ๋ธ๋ง๋ณด๋ค๋ ๋ฏธ๋ฆฌ ์ ์๋ ๊ท์น ์งํฉ์ ์์กดํฉ๋๋ค.
- ์กฐ์ง ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ๊ตฌ์ฑ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํฉ๋๋ค.
Swift, Java, C#, ๊ธฐํ ์ธ์ด ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด๋ ๊ท์น ์ ์ฉ์ ์ํ๋ ๊ธฐ์ ์๊ฒ SonarQube๋ ์ผ๊ด๋ ๊ฑฐ๋ฒ๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ณ ๊ธ ๋ณด์ ํ ์คํธ ๋๋ ์ข ์์ฑ ์์ค์ ์ทจ์ฝ์ ์ ์ด๋ฅผ ์ํด์๋ ์ ์ฉ SAST ๋๋ SCA ํ๋ซํผ์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ฐ๊ฒฉ ํน์ง
SonarQube ์ปค๋ฎค๋ํฐ ์๋์ ์ ๋ฌด๋ฃ์ด์ง๋ง ๊ณ ๊ธ ๋ณด์ ๊ธฐ๋ฅ๊ณผ ๋ถ๊ธฐ ๋ถ์ ๊ธฐ๋ฅ์ ์ ํ์ด ์์ต๋๋ค. ๊ฐ๋ฐ์, ์ํฐํ๋ผ์ด์ฆ ๋ฐ ๋ฐ์ดํฐ ์ผํฐ ์๋์ ์ ๋ถ์๋ ์ฝ๋ ๋ผ์ธ ์๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ ์์ฉ ๋ผ์ด์ ์ค๋ฅผ ๋์ ํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ ์๋์ ์ ํฌํธํด๋ฆฌ์ค ๊ด๋ฆฌ, ๊ณ ๊ธ ๋ณด์ ๊ท์น ๋ฐ ๊ท์ ํ๊ฒฝ์ ํ์ํ ํ์ฅ ๊ธฐ๋ฅ์ ์ถ๊ฐํฉ๋๋ค.
๋น์ฉ ๊ณ ๋ ค ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์๋ฒ ์ธํ๋ผ
- ๋ผ์ด์ ์ค ๋ฑ๊ธ ์ ํ
- ๊ท์น ๊ด๋ฆฌ ๊ด๋ จ ํ์ ๋ถ๋ด
- ํ์ง ๊ด๋ฆฌ ๊ฒ์ดํธ ๊ต์ก
๊ตฌ์กฐ์ ํ๊ณ
SonarQube์ ๊ท์น ์์ง์ ์์ ํ ๊ธฐํธ ์คํ์ด๋ ๊ณ ๊ธ ์ค์ผ ์ถ์ ๋ณด๋ค๋ ํจํด ๊ธฐ๋ฐ ํ์ง์ ์ค์ ์ ๋ก๋๋ค. ๋น๋๊ธฐ ํจํด์ด๋ ๋ณต์กํ ๋์์ฑ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ Swift ํ๊ฒฝ์์๋ ๊ท์น์ ์ ํ๋๊ฐ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
๋ํ SonarQube๋ ๋ณด๊ณ ๊ธฐ๋ฅ์ ์ค์ ์ง์คํํ์ง๋ง, ๋ฐํ์ ์๊ฒฉ ์ธก์ ๋ฐ์ดํฐ๋ ์ข ์์ฑ ๋๋ฌ ๊ฐ๋ฅ์ฑ ๋ชจ๋ธ ์ ๋ฐ์ ๊ฑธ์ณ ๊ฒฐ๊ณผ๋ฅผ ์ํธ ์ฐ๊ด์ํค์ง๋ ์์ต๋๋ค. ์ฐ์ ์์ ์ง์ ๋ก์ง์ ์คํ ๊ฒฝ๋ก ๊ฐ์ค์น๊ฐ ์๋ ์ฌ๊ฐ๋ ๊ธฐ๋ฐ ๋ฐ ๊ท์น ๊ธฐ๋ฐ์ ๋๋ค.
๊ธฐ์ Swift ์ํ๊ณ ๋ด์์ SonarQube๋ ์ค์ ์ง์ค์ ํ์ง ๊ด๋ฆฌ ๊ณ์ธต์ผ๋ก์ ํจ๊ณผ์ ์ผ๋ก ๊ธฐ๋ฅํฉ๋๋ค. ์ด๋ CI ๊ฒ์ดํธ ์ํ ๋ฐ ์ธ์ด ๊ฐ ์ ์ฑ ์ผ๊ด์ฑ์ ๊ฐํํ์ง๋ง, ์ทจ์ฝ์ ๋ถ์์ ๊น์ด์ ์ข ์์ฑ ์ํ ๊ฐ์์ฑ์ด ์ ๋ต์ ์ฐ์ ์์์ธ ๊ฒฝ์ฐ์๋ ๋ณด๋ค ๊ด๋ฒ์ํ ๋ณด์ ์ํคํ ์ฒ์ ํตํฉ๋์ด์ผ ํฉ๋๋ค.
Checkmarx ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์ ํ ์คํธ
๊ณต์ ์ฌ์ดํธ: https://checkmarx.com/product/static-application-security-testing/
Checkmarx SAST๋ Swift๋ฅผ ํฌํจํ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ณด์ ์ทจ์ฝ์ ์ ์๋ณํ๋๋ก ์ค๊ณ๋ ์ํฐํ๋ผ์ด์ฆ๊ธ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์ ํ ์คํธ ํ๋ซํผ์ ๋๋ค. ๊ฐ๋ฒผ์ด ๋ฆฐํ ๋๊ตฌ๋ ํ์ง ์ค์ฌ ๋ถ์๊ธฐ์ ๋ฌ๋ฆฌ, Checkmarx๋ ์ฌ์ธต์ ์ธ ๋ฐ์ดํฐ ํ๋ฆ ๋ฐ ์ ์ด ํ๋ฆ ๋ถ์์ ํตํด ์ ์ฉ ๊ฐ๋ฅํ ๋ณด์ ๊ฒฐํจ์ ํ์งํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค. ์คํ์ผ์ ์ธ ํ์ง ๊ด๋ฆฌ ๋๊ตฌ๋ผ๊ธฐ๋ณด๋ค๋ ๋ณด์ ๊ฑฐ๋ฒ๋์ค ์์คํ ์ผ๋ก ์๋ฆฌ๋งค๊นํ๊ณ ์์ต๋๋ค.
๊ฑด์ถ ๋ชจ๋ธ
Checkmarx๋ ์ค์ ์ง์ค์ ์ค์บ ์์ง ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํฉ๋๋ค. ์์ค ์ฝ๋๋ ๋ฐฐํฌ ์ ํธ๋์ ๋ฐ๋ผ ์จํ๋ ๋ฏธ์ค ๋๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ํ๋ซํผ์ ํตํด ์ค์บ๋ฉ๋๋ค. ์ด ์์ง์ ํ๋ก์์ ๊ฐ ๋ถ์์ ์ํํ์ฌ ์ถ์ ๊ตฌ๋ฌธ ํธ๋ฆฌ์ ๋ฐ์ดํฐ ํ๋ฆ ๊ทธ๋ํ๋ฅผ ๊ตฌ์ฑํ๊ณ , ์ ๋ขฐํ ์ ์๋ ์ ๋ ฅ์ด ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์ ํตํด ์ด๋ป๊ฒ ์ ํ๋๋์ง ๋ชจ๋ธ๋งํฉ๋๋ค.
Swift ์ฝ๋๋ฒ ์ด์ค์ ๊ฒฝ์ฐ Checkmarx๋ ๋ค์์ ์ง์ํฉ๋๋ค.
- ์ฃผ์ ์ทจ์ฝ์ ์ ๋ํ ์ค์ผ ๋ถ์
- ์์ ํ์ง ์์ API ์ฌ์ฉ ๊ฐ์ง
- ํ๋์ฝ๋ฉ๋ ๋น๋ฐ ์๋ณ
- ์ฌ์ฉ์ ์ง์ ๋ณด์ ์ฟผ๋ฆฌ ๊ตฌ์ฑ
- ์ทจ์ฝ์ ๋ถ๋ฅ ํ๋ ์์ํฌ์์ ํตํฉ
๋ฐ๊ฒฌ๋ ์ทจ์ฝ์ ์ OWASP ๋ฒ์ฃผ ๋ฐ CWE ์๋ณ์์ ๊ฐ์ ํ์คํ๋ ๋ถ๋ฅ ์ฒด๊ณ์ ๋งคํ๋ฉ๋๋ค. Checkmarx๋ ์์ฒด ๊ฐ๋ฐ ์ฝ๋์ ๋ํ CVE ์๋ณ์๋ฅผ ์ง์ ์์ฑํ์ง๋ ์์ง๋ง, ๋ฐ๊ฒฌ๋ ์ทจ์ฝ์ ์ ๊ท์ ์ค์ ๋ณด๊ณ ๋ฐ ๊ฐ์ฌ ๋ฌธ์ ์์ฑ์ ๋์์ด ๋๋ ์ทจ์ฝ์ ๋ถ๋ฅ์ ์ฐ๊ณํฉ๋๋ค.
CI์์์ ์คํ ๋์
Checkmarx๋ ํ๋ฌ๊ทธ์ธ๊ณผ API ๊ธฐ๋ฐ ํธ๋ฆฌ๊ฑฐ๋ฅผ ํตํด CI ํ์ดํ๋ผ์ธ์ ํตํฉ๋ฉ๋๋ค. ์ค์บ์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
- ์ ์ฒด ๊ธฐ์ค์ ๋ถ์
- ์ฆ๋ถ ํ ๋ฆฌํ์คํธ ์ค์บ
- ์ฌ๊ฐ๋ ์๊ณ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ ์ฑ ์ค์ฌ์ ๊ฒ์ดํ
- ๋ฆด๋ฆฌ์ค ์ ํจ์ฑ ๊ฒ์ฆ์ ์ํ ์ข ํฉ ๊ฒ์ฌ ์ผ์ ์๋ฆฝ
์คํ ์๊ฐ์ ์ ์ฅ์ ํฌ๊ธฐ์ ๋ถ์ ๊น์ด์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์ฌ์ธต์ ์ธ ํ๋ก์์ ๊ฐ ์ค์บ์ ํนํ ๋น๋๊ธฐ ๋๋ ๋ชจ๋์ ์ํคํ ์ฒ๊ฐ ๋ง์ ๋๊ท๋ชจ Swift ํ๋ก์ ํธ์์ ์ง์ฐ ์๊ฐ์ ์ ๋ฐํ ์ ์์ต๋๋ค. ๊ธฐ์ ์์๋ ์ผ๋ฐ์ ์ผ๋ก ๋น ๋ฅธ ์ฆ๋ถ ์ค์บ๊ณผ ์ ์ฒด ๋ณด์ ๊ฐ์ฌ๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ค์บ ๊น์ด์ CI ์๋ต์ฑ ๊ฐ์ ๊ท ํ์ ์ ์งํฉ๋๋ค.
๊ฒฐ๊ณผ๋ ์ค์ ์ง์ค์ ๋์๋ณด๋์ ํตํฉ๋์ด ๋ฌธ์ ๋ถ๋ฅ ์ํฌํ๋ก ๋ฐ ์ด์ ๊ด๋ฆฌ ์์คํ ๊ณผ์ ํตํฉ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
๊ธฐ์ ๊ท๋ชจ ํ์ฅ์ ํ์ค
Checkmarx๋ ๊ท์ ์ฐ์ ๋ฐ ๊ณ ๋ณด์ ํ๊ฒฝ์ ๋ง๊ฒ ์ค๊ณ๋์์ต๋๋ค. ์ญํ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด, ๊ฐ์ฌ ์ถ์ , ๊ฑฐ๋ฒ๋์ค ๋ณด๊ณ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๊ท์ ์ค์๋ฅผ ์ค์ํ๋ ๊ธฐ์ ์ ์ ํฉํฉ๋๋ค.
์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฌ์ธต์ ์ธ ๋ฐ์ดํฐ ํ๋ฆ ๋ฐ ์ค์ผ ์ถ์ ๊ธฐ๋ฅ
- ๊ด๋ฒ์ํ ๋ณด์ ๊ท์น ์ ์ฉ ๋ฒ์
- ์ค์ ์ง์ค์ ์ ์ฑ ๊ด๋ฆฌ
- DevSecOps ํด์ฒด์ธ๊ณผ์ ํตํฉ
ํ์ง๋ง ๊ท๋ชจ ํ์ฅ ์ ๊ณ ๋ คํด์ผ ํ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์จํ๋ ๋ฏธ์ค ๋ฐฐํฌ๋ฅผ ์ํ ์ธํ๋ผ ์๊ตฌ ์ฌํญ
- ๋ผ์ด์ ์ค ๋น์ฉ์ ์ ํ๋ฆฌ์ผ์ด์ ํฌ๊ธฐ ๋๋ ์ค์บ ๋ณผ๋ฅจ์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค.
- ๊ท์น ์กฐ์ ๋ฐ ์คํ ๊ด๋ฆฌ ๊ด๋ จ ์ด์ ์ค๋ฒํค๋
- ๋๊ท๋ชจ Swift ๋ชจ๋ ธ๋ ํฌ์ ๋ํ CI ์ฑ๋ฅ์ ๋ฏธ์น ์ ์๋ ์ ์ฌ์ ์ํฅ
์คํ ๊ด๋ฆฌ์๋ ์ ๋ด ๋ณด์ ์์ง๋์ด๋ง ๊ฐ๋ ์ด ํ์ํฉ๋๋ค. ์ฒด๊ณ์ ์ธ ๋ถ๋ฅ ํ๋ก์ธ์ค๊ฐ ์์ผ๋ฉด ํ์ ๊ฒฝ๊ณ ํผ๋ก๊ฐ์ ๋๋ ์ ์์ต๋๋ค.
๊ฐ๊ฒฉ ํน์ง
Checkmarx๋ ๊ธฐ์ ์ฉ ๋ผ์ด์ ์ค ๋ชจ๋ธ์ ์ ๊ณตํ๋ ์์ฉ ์๋ฃจ์ ์ ๋๋ค. ๊ฐ๊ฒฉ์ ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์, ์ฝ๋ ๋ผ์ธ ์ ๋๋ ๊ฒ์ฌ ๋น๋์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค. ํด๋ผ์ฐ๋ ํธ์คํ ์ต์ ์ ์ ํํ๋ฉด ์ธํ๋ผ ๋ถ๋ด์ ์ค์ด๋ฉด์๋ ๊ตฌ๋ ๊ธฐ๋ฐ ๋น์ฉ์ ์ ์งํ ์ ์์ต๋๋ค.
๊ธฐ์ ์ ๋ค์ ์ฌํญ์ ๋ํด ์ฑ ์์ ์ ธ์ผ ํฉ๋๋ค:
- ํ๋ซํผ ๋ผ์ด์ผ์ฑ
- ์ ๋ด ๋ณด์ ๋ถ์๊ฐ ๋ฆฌ์์ค
- CI ํตํฉ ์์ง๋์ด๋ง
- ์ง์์ ์ธ ๊ท์น ์กฐ์ ๋ฐ ๊ฑฐ๋ฒ๋์ค ์ ์ง ๊ด๋ฆฌ
๊ตฌ์กฐ์ ํ๊ณ
Checkmarx๋ ์ ์ ์์ค ์์ค ๋ณด์ ๋ถ์์๋ง ์ง์คํฉ๋๋ค. ๋ณด์ ๋ชจ๋๊ณผ ํจ๊ป ์ฌ์ฉํ์ง ์๋ ํ ์ํํธ์จ์ด ๊ตฌ์ฑ ๋ถ์ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ์ง ์์ต๋๋ค. ์ข ์์ฑ ์ํ ๊ฐ์์ฑ์ ํ๋ณดํ๋ ค๋ฉด ์ธ๋ถ SCA ์ ํ๊ณผ์ ํตํฉ์ด ํ์ํ ์ ์์ต๋๋ค.
๋ํ, ๋ฐ์ดํฐ ํ๋ฆ ๋ชจ๋ธ๋ง์ ๊ฒฝ๋ ๋ถ์๊ธฐ๋ณด๋ค ๋ฐ์ ๋์์ง๋ง, ์ ์ ๋ถ์์ ๋ณธ์ง์ ์ผ๋ก ์์ ํ ๋ฐํ์ ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํ์ง ๋ชปํฉ๋๋ค. ๋ณต์กํ Swift ๋์์ฑ ํจํด์ด๋ ๋ฆฌํ๋ ์ ๋ฉ์ปค๋์ฆ์ ํน์ ์์ธ ์ํฉ์์ ์ ํ๋๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์ํฐํ๋ผ์ด์ฆ Swift ์ํ๊ณ์์ Checkmarx๋ ์ฒด๊ณ์ ์ธ DevSecOps ์ ์ฑ ์ ์ํํ ์ ์๋ ์ฃผ์ ๋ณด์ ์ค์บ ์์ง ์ญํ ์ ํฉ๋๋ค. Checkmarx๋ ๊ฐ๋ ฅํ ์ทจ์ฝ์ ํ์ง ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง, ํฌ๊ด์ ์ธ ๊ฑฐ๋ฒ๋์ค๋ฅผ ๋ฌ์ฑํ๋ ค๋ฉด ๋ ๊ด๋ฒ์ํ ํ์ง ์งํ ๋ฐ ์ข ์์ฑ ๊ด๋ฆฌ ํ๋ซํผ๊ณผ ํตํฉ๋์ด์ผ ํฉ๋๋ค.
Fortify ์ ์ ์ฝ๋ ๋ถ์๊ธฐ
๊ณต์ ์ฌ์ดํธ: https://www.microfocus.com/en-us/cyberres/application-security/static-code-analyzer
Fortify Static Code Analyzer๋ ๋๊ท๋ชจ์ ์ด๊ธฐ์ข ์ ํ๋ฆฌ์ผ์ด์ ํฌํธํด๋ฆฌ์ค ์ ๋ฐ์ ๊ฑธ์ณ ์ฌ์ธต์ ์ธ ์ทจ์ฝ์ ํ์ง๋ฅผ ์ํด ์ค๊ณ๋ ์ํฐํ๋ผ์ด์ฆ SAST ํ๋ซํผ์ ๋๋ค. Swift๋ฅผ ๋น๋กฏํ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ง์ํ๋ฉฐ, ๋ณด์์ ๋ฏผ๊ฐํ๊ฑฐ๋ ๊ท์ ์ค์๋ฅผ ์ค์ํ๋ ์กฐ์ง์ ์ฃผ๋ก ๋ฐฐํฌ๋ฉ๋๋ค. Fortify๋ ์ ๋ฐํ ์ทจ์ฝ์ ๋ชจ๋ธ๋ง, ๊ฐ์ฌ ์ถ์ ์ฑ, ๊ทธ๋ฆฌ๊ณ ๊ณต์์ ์ธ ๊ฑฐ๋ฒ๋์ค ํ๋ก์ธ์ค์์ ํตํฉ์ ๊ฐ์กฐํฉ๋๋ค.
๊ฑด์ถ ๋ชจ๋ธ
Fortify๋ ๋ฐ์ดํฐ ํ๋ฆ, ์ ์ด ํ๋ฆ ๋ฐ ์๋ฏธ ๋ชจ๋ธ๋ง ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ํฌ๊ด์ ์ธ ์ ์ ๋ถ์์ ์ํํ๋ ์ค์บ๋ ์์ง์ ํตํด ์๋ํฉ๋๋ค. ๋ถ์ ์์ง์ ์ฝ๋๋ฒ ์ด์ค์ ์ค๊ฐ ํํ์ ๊ตฌ์ฑํ์ฌ ๋ฐ์ดํฐ๊ฐ ํจ์, ๋ฉ์๋ ๋ฐ ๋ชจ๋์ ํตํด ์ด๋ป๊ฒ ์ ๋ฌ๋๋์ง ์ถ์ ํฉ๋๋ค. Swift์ ๊ฒฝ์ฐ, ์ด๋ ์ธ์ ์ ์ทจ์ฝ์ , ์์ ํ์ง ์์ ์ํธํ ์ฌ์ฉ, ๋ถ์ ์ ํ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฐ ์์ ํ์ง ์์ API ํธ์ถ ํจํด๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๋ณด์ ์ฝ๋ฉ ์ํ์ ๋ชจ๋ธ๋งํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค.
ํด๋น ํ๋ซํผ์ ์ค์ ์ง์ค์ ๋์๋ณด๋, ์ญํ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด ๋ฐ ์ทจ์ฝ์ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํ๋ Fortify Software Security Center์ ํตํฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
Swift ํ๊ฒฝ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ ์ฐจ ๊ฐ ์ค์ผ ๋ถ์
- OWASP ๋ฐ CWE์ ๋ถํฉํ๋ ์์ ํ ์ฝ๋ฉ ๊ท์น ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์กฐ์ง ์ ์ฑ ์ ๋ํ ์ฌ์ฉ์ ์ง์ ๊ท์น ์์ฑ
- ๊ฐ์ฌ ๋ณด๊ณ ๋ฅผ ์ํ ๊ตฌ์กฐํ๋ ์ทจ์ฝ์ ๋ถ๋ฅ
Fortify๋ ์์ฒด Swift ์ฝ๋์ CVE ์๋ณ์๋ฅผ ํ ๋นํ์ง๋ ์์ง๋ง, ๊ท์ ๋ฌธ์ ์์ฑ์ ์ง์ํ๊ธฐ ์ํด ํ์คํ๋ ๋ถ๋ฅ ์ฒด๊ณ์ ๋ง์ถฐ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค.
CI์์์ ์คํ ๋์
Fortify๋ ๋ช ๋ น์ค ๋๊ตฌ์ ํ๋ฌ๊ทธ์ธ์ ํตํด CI ํ์ดํ๋ผ์ธ์ ํตํฉ๋ฉ๋๋ค. ์กฐ์ง์์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํฉ๋๋ค.
- ํ ๋ฆฌํ์คํธ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํ ๋น ๋ฅธ ์ค์บ
- ์ถ์ ํ๋ณด ํ๊ฐ๋ฅผ ์ํ ์ ์ฒด ์ค์บ
- ์ฌ๊ฐ๋๊ฐ ๋์ ๋ฐ๊ฒฌ ์ฌํญ์ ๋ํ ์ ์ฑ ๊ธฐ๋ฐ ๊ฒ์ดํ
- ๊ธฐ์ ์ ์ฒด ์ฌ๋ถ์ ์ฃผ๊ธฐ ๊ณํ
์ฌ์ธต ๋ถ์์ ํนํ ๋ณต์กํ ๋ชจ๋ ์ข ์์ฑ์ ๊ฐ์ง ๋๊ท๋ชจ Swift ์ฝ๋๋ฒ ์ด์ค์์ ์๋นํ ์คํ ์๊ฐ์ ํ์๋ก ํ ์ ์์ต๋๋ค. CI ์ง์ฐ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด ๊ธฐ์ ์์๋ ์ข ์ข ๋น ๋ฅธ ์ฆ๋ถ ๊ฒ์ฌ์ ๊ฐ๋ฐ์ ํผ๋๋ฐฑ ๋ฃจํ ์ธ๋ถ์์ ์ํ๋๋ ํฌ๊ด์ ์ธ ๋ณด์ ๊ฒ์ฌ๋ฅผ ๋ถ๋ฆฌํฉ๋๋ค.
๊ฒ์ฌ ๊ฒฐ๊ณผ๋ ์ค์ ๊ด๋ฆฌ ์ฝ์์ ์ ๋ก๋๋๋ฉฐ, ๋ณด์ ํ์ ์ด๋ฅผ ๋ฐํ์ผ๋ก ๋ฌธ์ ๋ฅผ ๋ถ๋ฅํ๊ณ ํด๊ฒฐ ์กฐ์น๋ฅผ ์ง์ ํฉ๋๋ค.
๊ธฐ์ ๊ท๋ชจ ํ์ฅ์ ํ์ค
Fortify๋ ๋๊ท๋ชจ ๊ธฐ์ ๊ฑฐ๋ฒ๋์ค ๋ฐ ์๊ฒฉํ ๊ท์ ์ค์ ํ๊ฒฝ์ ์ํด ์ค๊ณ๋์์ต๋๋ค. ๊ตฌ์กฐํ๋ ๊ฐ์ฌ ์ถ์ , ์ทจ์ฝ์ ๊ฒฝ๊ณผ ์๊ฐ ์งํ ๋ฐ ์ญํ ๊ธฐ๋ฐ ๊ฒํ ์ํฌํ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฑ์ํ ์ทจ์ฝ์ ๋ชจ๋ธ๋ง ์์ง
- ์์ธํ ๊ฐ์ ์ง์นจ
- ์ค์ ์ง์ค์ ๊ฑฐ๋ฒ๋์ค ๋์๋ณด๋
- ๊ท์ ์ค์ ์ค์ฌ์ ๋ณด๊ณ ์ฒด๊ณ
์ค์ ์ด์์์ ๊ณ ๋ ค ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์๋นํ ์ธํ๋ผ ๋๋ ํด๋ผ์ฐ๋ ๊ตฌ๋ ๋น์ฉ
- ๋ถ๋ฅ ๋ฐ ์กฐ์ ์์ ์ ์ํ ์ ๋ด ๋ณด์ ์ธ๋ ฅ ํ์
- ๋๊ท๋ชจ ๋ค์ค ํ ์กฐ์ง์ ๊ตฌ์ฑ ๋ณต์ก์ฑ
- ๊ณ ๊ธ ์ทจ์ฝ์ ์ถ์ ๋ถ์ ํ์ต ๊ณก์
DevSecOps ํ๋ก์ธ์ค๊ฐ ์ ๋๋ก ๊ฐ์ถฐ์ง์ง ์์ ์กฐ์ง์์๋ Fortify ๋ฐฐํฌ ์ ์๋นํ ์์ ๋ฌธ์ ์ ์ด ๋ฐ๊ฒฌ๋ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด์๋ ์ฒด๊ณ์ ์ธ ๊ฑฐ๋ฒ๋์ค๊ฐ ํ์ํฉ๋๋ค.
๊ฐ๊ฒฉ ํน์ง
Fortify๋ ์์ฉ ์ํฐํ๋ผ์ด์ฆ ํ๋ซํผ์ ๋๋ค. ๋ผ์ด์ ์ค ๋ชจ๋ธ์ ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์, ์ฝ๋ ๋ผ์ธ ์ ๋๋ ๊ตฌ๋ ๋ฑ๊ธ์ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค. ์ด ์์ ๋น์ฉ์๋ ์ธํ๋ผ ๊ตฌ์ถ, ํ๋ซํผ ๋ผ์ด์ ์ค ๋ฐ ๋ณด์ ์์ง๋์ด๋ง ๋ฆฌ์์ค๊ฐ ํฌํจ๋ฉ๋๋ค.
๊ธฐ์ ์ ๋ค์ ์ฌํญ์ ๊ณํํด์ผ ํฉ๋๋ค.
- ์ฅ๊ธฐ์ ์ธ ๊ฑฐ๋ฒ๋์ค ๋ถ๋ด
- ๊ท์น ์กฐ์ ์ฃผ๊ธฐ
- ๊ฐ๋ฐ์ ๊ต์ก
- CI ๋ฐ ํฐ์ผํ ์์คํ ์ ํ์ฉํ ํตํฉ ์์ง๋์ด๋ง
๊ตฌ์กฐ์ ํ๊ณ
Fortify๋ ๊ณ ๊ธ ์ ์ ์ทจ์ฝ์ ํ์ง ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง, ์์ค ์ฝ๋ ์์ค ๋ถ์์๋ง ๊ตญํ๋ฉ๋๋ค. ๋์ ๊ตฌ์ฑ ๋ก๋ฉ์ด๋ ํ๊ฒฝ์ ๋ฐ๋ฅธ ์คํ ๊ฒฝ๋ก์ ๊ฐ์ ๋ฐํ์ ๊ด๋ จ ๋์์ ์๋ฒฝํ๊ฒ ๋ฐ์๋์ง ์์ ์ ์์ต๋๋ค.
๋ํ Fortify๋ ํต์ฌ SAST ์์ง ๋ด์์ ์ํํธ์จ์ด ๊ตฌ์ฑ ๋ถ์ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ์ง ์์ต๋๋ค. ์ข ์์ฑ ์์ค์ ์ทจ์ฝ์ ๊ด๋ฆฌ๋ฅผ ์ํด์๋ ๋ณ๋์ ๋ชจ๋์ด๋ ๋ณด์ ๋๊ตฌ์์ ํตํฉ์ด ํ์ํฉ๋๋ค.
๊ธฐ์ Swift ์ํ๊ณ ๋ด์์ Fortify๋ ๊ท์ ๋ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ์ง์ํ ์ ์๋ ๊ฐ๋ ฅํ ๋ณด์ ๊ฐํ ๊ณ์ธต ์ญํ ์ ํฉ๋๋ค. ์ฌ์ธต์ ์ธ ์ทจ์ฝ์ ๋ถ์๊ณผ ๊ฐ๋ ฅํ ๊ฑฐ๋ฒ๋์ค ์ฐ๊ณ๋ฅผ ์ ๊ณตํ์ง๋ง, ๋ถ์ ๊ธฐ๋ฅ์ ํตํด ์ง์์ ์ธ ๊ฐ์น๋ฅผ ์ป์ผ๋ ค๋ฉด ์กฐ์ง์ ์ฑ์๋๊ฐ ํ์ํฉ๋๋ค.
์ปค๋ฒ๋ฆฌํฐ ์ ์ ๋ถ์
๊ณต์ ์ฌ์ดํธ: https://www.synopsys.com/software-integrity/security-testing/static-analysis-sast.html
์๋์์ค(Synopsys)์์ ๊ฐ๋ฐํ ์ปค๋ฒ๋ฆฌํฐ(Coverity)๋ ํ์ง ์์ง๋์ด๋ง๊ณผ ๋ณด์ ๋ณด์ฆ์ ๊ต์ฐจ์ ์ ์์นํ ์ ์ ๋ถ์ ํ๋ซํผ์ ๋๋ค. C ๋ฐ C++ ์์คํ ์ ๊ฒฐํจ ํ์ง ๊ธฐ๋ฅ์ผ๋ก ๋๋ฆฌ ์๋ ค์ ธ ์์ง๋ง, ์ค์ํํธ(Swift)๋ฅผ ๋น๋กฏํ ์ต์ ์ธ์ด๋ ์ง์ํฉ๋๋ค. ์ปค๋ฒ๋ฆฌํฐ์ ๊ธฐ์ ๊ฐ์น๋ ํ์ฅ ๊ฐ๋ฅํ ๊ฒฐํจ ๋ชจ๋ธ๋ง, ํ๋ก์ ํธ ๊ฐ ๊ด๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ๊ด๋ฒ์ํ ์ํํธ์จ์ด ๋ฌด๊ฒฐ์ฑ ์ํ๊ณ์์ ํตํฉ์ ์์ต๋๋ค.
๊ฑด์ถ ๋ชจ๋ธ
Coverity๋ ์ค์ ์ง์ค์ ๋ถ์ ์๋ฒ์ ์ธ์ด๋ณ ๋น๋ ์บก์ฒ ๋ฉ์ปค๋์ฆ์ ๊ฒฐํฉํ์ฌ ์๋ํฉ๋๋ค. ๋ถ์ ๊ณผ์ ์์ ์์คํ ์ ์ปดํ์ผ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์บก์ฒํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ฐ ํํ์ ๊ตฌ์ฑํฉ๋๋ค. ์ด ๋ชจ๋ธ์ ๊ฒฝ๋ ๋ฆฐํฐ๋ณด๋ค ์ฌ์ธต์ ์ธ ์๋ฏธ๋ก ์ ํ๊ฐ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ฉฐ, ํ์ผ ๊ฐ ๋ฐ ํ๋ก์์ ๊ฐ ๋ถ์์ ์ง์ํฉ๋๋ค.
Swift ํ๊ฒฝ์์ Coverity๋ ๋ค์ ์ฌํญ์ ์ค์ ์ ๋ก๋๋ค.
- ๋ ผ๋ฆฌ์ ๊ฒฐํจ ๋ฐ ์ ๋ขฐ์ฑ ๋ฌธ์ ๊ฐ์ง
- ํน์ ๋ณด์ ์ทจ์ฝ์ ์๋ณ
- ์์ ์ค์ฉ ๋ฐ ๋์์ฑ ๋ชจ๋ธ๋ง
- ์ฝ๋ ํ์ง ์ธก์ ์งํ์๋ ์ฝ๋ ๋ณต์ก์ฑ ๋ฐ ์ ์ง๋ณด์์ฑ ์งํ๊ฐ ํฌํจ๋ฉ๋๋ค.
๋ณด์ ๋ฐ๊ฒฌ ์ฌํญ์ CVE ์๋ณ์ ๋์ CWE ๋ถ๋ฅ ์ฒด๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ๋ฅ๋ฉ๋๋ค. ์ด ํ๋ซํผ์ ์ข ์์ฑ ์์ค์ ์ทจ์ฝ์ ๊ด๋ฆฌ๋ณด๋ค๋ ๊ตฌ์กฐ์ ๊ฒฐํจ ํ์ง ๋ฐ ์ฝ๋ ์์ ์ฑ์ ์ค์ ์ ๋๊ณ ์์ต๋๋ค.
CI์์์ ์คํ ๋์
Coverity๋ ๋ถ์ ์ ์ ์ปดํ์ผ ์ํฐํฉํธ๋ฅผ ์บก์ฒํ๋ ๋น๋ ํตํฉ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ CI ํ์ดํ๋ผ์ธ์ ํตํฉ๋ฉ๋๋ค. ์ด๋ ๋จ์ ์์ค ์ฝ๋ ์ค์บ๊ณผ๋ ๋ค๋ฅด๋ฉฐ Swift ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ๋น๋ ๊ตฌ์ฑ์ ์กฐ์ ํด์ผ ํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ CI ํจํด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์๋ก์ด ์ฝ๋ ๋๋ ์์ ๋ ์ฝ๋์ ๋ํ ์ฆ๋ถ ๋ถ์
- ์ผ๊ฐ ์ ์ฒด ๋ถ์ ์ค์บ
- ์ฌ๊ฐ๋๊ฐ ๋์ ๊ฒฐํจ์ ๋ํ ์ ์ฑ ๊ธฐ๋ฐ ๊ฒ์ดํ
- ํ์ธ๋ ์ฌํญ์ ๋ํ ์๋ ํฐ์ผ ์์ฑ
์คํ ์๊ฐ์ ์ ์ฅ์ ํฌ๊ธฐ์ ๋ถ์ ๊น์ด์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. Coverity๋ ์์ธํ ์๋ฏธ ๋ชจ๋ธ์ ๊ตฌ์ถํ๊ธฐ ๋๋ฌธ์ ๊ตฌ๋ฌธ ๊ธฐ๋ฐ ๋ถ์๊ธฐ๋ณด๋ค ์ค์บ ์๊ฐ์ด ๋ ์ค๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ๊ธฐ์ ๋ค์ ํ์ดํ๋ผ์ธ ์ฑ๋ฅ์ ์ ์งํ๊ธฐ ์ํด ๋น๋์ ๊น์ด ์ฌ์ด์์ ๊ท ํ์ ๋ง์ถ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๊ฒฐ๊ณผ๋ Coverity Connect ๋์๋ณด๋์ ์ค์ ์ง์ค์์ผ๋ก ๊ด๋ฆฌ๋๋ฉฐ, ์ด ๋์๋ณด๋๋ ๋ฌธ์ ์ถ์ , ๋ฌธ์ ๋ถ๋ฅ ์ํฌํ๋ก ๋ฐ ๊ณผ๊ฑฐ ๊ฒฐํจ ์ถ์ธ ๋ถ์์ ์ ๊ณตํฉ๋๋ค.
๊ธฐ์ ๊ท๋ชจ ํ์ฅ์ ํ์ค
Coverity๋ ๊ธด ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๋ ์กฐ์ง์ ์ํด ์ค๊ณ๋์์ต๋๋ค. ํนํ ๋ณด์๊ณผ ๋๋ถ์ด ์์ ์ฑ ๋ฐ ๊ฒฐํจ ์๋ฐฉ์ด ์ฐ์ ์๋๋ ํ๊ฒฝ์์ ๋ฐ์ด๋ ์ฑ๋ฅ์ ๋ฐํํฉ๋๋ค.
์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฌ์ธต ์๋ฏธ ๊ฒฐํจ ํ์ง
- ๋ค๊ตญ์ด ํฌํธํด๋ฆฌ์ค ๊ฐ์์ฑ
- ๊ตฌ์กฐํ๋ ํ์ ๋ถ๋ฅ ์ํฌํ๋ก
- ๊ณผ๊ฑฐ ๊ฒฐํจ ๋ฐ๋ ์ถ์
ํ์ง๋ง ๊ตฌ์กฐ์ ์ ์ฝ ์กฐ๊ฑด์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
- ์ ์ฉ ๋ชจ๋ฐ์ผ ๋ณด์ ๋๊ตฌ์ ๋นํด Swift ํน์ ์ ๋ณด์ ์ฝ๋ฉ ์ธ๋ถ ์ฌํญ์ ๋ํ ๊ฐ์กฐ๊ฐ ์ ์ต๋๋ค.
- ๋ค์ดํฐ๋ธ ์ ์ด ์ข ์์ฑ ์ทจ์ฝ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
- ๋น๋ ์บก์ฒ ๊ตฌ์ฑ์ ์ ์ฌ์ ๋ณต์ก์ฑ
- ๋ผ์ด์ ์ค ๋น์ฉ์ ๊ธฐ์ ํฌํธํด๋ฆฌ์ค์ ๋ง์ถฐ ์กฐ์ ๋ฉ๋๋ค.
์ฌ๋ฌ ํ์ด ํ์ ํ๋ ํ๊ฒฝ์์๋ ๊ท์น ์งํฉ ๋ฐ ๊ฒฐํจ ๋ถ๋ฅ์ ์ฐจ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ผ๊ด๋ ๊ตฌ์ฑ ๊ด๋ฆฌ๊ฐ ํ์์ ์ ๋๋ค.
๊ฐ๊ฒฉ ํน์ง
Coverity๋ ์์ฉ ์ํฐํ๋ผ์ด์ฆ ํ๋ซํผ์ผ๋ก, ๋ผ์ด์ ์ค ๋ชจ๋ธ์ ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋ ๋ผ์ธ ์ ๋๋ ํ๋ก์ ํธ ์๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค. ๋น์ฉ์๋ ํ๋ซํผ ๋ผ์ด์ ์ค, ์๋ฒ ์ธํ๋ผ ๋๋ ํด๋ผ์ฐ๋ ๊ตฌ๋ , ์ด์ ๊ด๋ฆฌ ๋ฆฌ์์ค๊ฐ ํฌํจ๋ฉ๋๋ค.
๊ธฐ์ ์ ๋ค์ ์ฌํญ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
- Swift ๋น๋ ์์คํ ์ ์ํ ํตํฉ ์์ง๋์ด๋ง
- ๊ท์น ์กฐ์ ์งํ ์ค
- ์ ์ฉ ๋ถ๋ฅ ์ํฌํ๋ก
- ๊ฒฐํจ ์์ ํด์์ ๋ํ ๊ฐ๋ฐ์ ๊ต์ก
๊ตฌ์กฐ์ ํ๊ณ
Coverity์ ๊ฐ์ ์ ์ฌ์ธต์ ์ธ ์ทจ์ฝ์ ์ ์ฉ ๋ชจ๋ธ๋ง๋ณด๋ค๋ ๊ตฌ์กฐ์ ๊ฒฐํจ ๋ถ์์ ์์ต๋๋ค. Coverity๋ ํน์ ๋ณด์ ์ทจ์ฝ์ ์ ์๋ณํ ์๋ ์์ง๋ง, ํฌ๊ด์ ์ธ ๋ณด์ ๋ถ์์ ์ํด์๋ ์ ๋ฌธ์ ์ธ SAST ํ๋ซํผ์ ๋์ฒดํ ์๋ ์์ต๋๋ค.
๋ํ, ์ข ์์ฑ ์์ค์ CVE ๋ชจ๋ํฐ๋ง ๋ฐ ์ํํธ์จ์ด ๊ตฌ์ฑ ๋ถ์์ ์ํด์๋ Synopsys ์ํ๊ณ ๋ด์ ๋ณ๋ ๋๊ตฌ ๋๋ ์ธ๋ถ ํ๋ซํผ๊ณผ์ ํตํฉ์ด ํ์ํฉ๋๋ค.
๊ธฐ์ ์ฉ Swift ๋ฐฐํฌ ํ๊ฒฝ์์ Coverity๋ ๊ฐ๋ ฅํ ์ ๋ขฐ์ฑ ๋ฐ ๊ตฌ์กฐ์ ๊ฒฐํจ ํ์ง ํ๋ซํผ ์ญํ ์ ํฉ๋๋ค. ์ด๋ ์ฅ๊ธฐ์ ์ธ ์ ์ง ๊ด๋ฆฌ์ฑ์ ๊ฐํํ๊ณ ํ๋ก๋์ ํ๊ฒฝ์ผ๋ก์ ๊ฒฐํจ ์ ์ถ์ ์ค์ฌ์ฃผ์ง๋ง, ํฌ๊ด์ ์ธ ์ทจ์ฝ์ ๊ด๋ฆฌ๋ฅผ ์ํด์๋ ๊ณ์ธตํ ๋ณด์ ์ํคํ ์ฒ์ ํตํฉ๋์ด์ผ ํฉ๋๋ค.
์ ๊ทธ๋
๊ณต์ ์ฌ์ดํธ: https://semgrep.dev
Semgrep์ Swift๋ฅผ ํฌํจํ ๋ค์ํ ์ธ์ด์์ ์ ์ฐํ๊ณ ํจํด ๊ธฐ๋ฐ์ ๋ณด์ ๋ฐ ํ์ง ๊ฒ์ฌ๋ฅผ ์ํํ๋๋ก ์ค๊ณ๋ ๊ท์น ๊ธฐ๋ฐ ์ ์ ๋ถ์ ํ๋ซํผ์ ๋๋ค. Semgrep์ ๊ฒฝ๋ํ๋๋ฉด์๋ ํ์ฅ ๊ฐ๋ฅํ DevSecOps ์๋ฃจ์ ์ผ๋ก, ๊ธฐ์ ์ด ๊ณ ์ฉ๋ ๊ฒ์ฌ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ์ง ์๊ณ ๋ ์ฌ์ฉ์ ์ง์ ๊ท์น์ ์ ์ํ๊ณ ์ ์ฉํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ Swift ํ๊ฒฝ์์ Semgrep์ ๊ฐ๋ฐ์ ์ค์ฌ์ ๋ฆฐํ ๊ณผ ๋ณธ๊ฒฉ์ ์ธ SAST ํ๋ซํผ์ ์ฐ๊ฒฐํ๋ ๊ฐ๊ต ์ญํ ์ ํฉ๋๋ค.
๊ฑด์ถ ๋ชจ๋ธ
Semgrep์ ์ ์ธ์ ๊ท์น ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ถ์ ๊ตฌ๋ฌธ ํธ๋ฆฌ์ ๋ํ ํจํด ๋งค์นญ์ ํตํด ์๋ํฉ๋๋ค. ์ฌ์ธต์ ์ธ ๊ธฐํธ ์คํ ์์ง๊ณผ๋ ๋ฌ๋ฆฌ, Semgrep์ ์ ์ฒด ํ๋ก๊ทธ๋จ ๋ชจ๋ธ๋ง์ ์๋ํ์ง ์์ต๋๋ค. ๋์ , ์์ ํ์ง ์์ ์ฌ์ฉ, ์ํคํ ์ฒ ์๋ฐ ๋๋ ์ ์ฑ ์ผํ์ ๋ํ๋ด๋ ์ ์๋ ํจํด์ ๋ํด ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ํ๊ฐํฉ๋๋ค.
Swift ์ฝ๋๋ฒ ์ด์ค์ ๊ฒฝ์ฐ Semgrep์ ๋ค์์ ์ง์ํฉ๋๋ค.
- ์์ ํ์ง ์์ API ์ฌ์ฉ ํจํด ๊ฐ์ง
- ํ๋์ฝ๋ฉ๋ ๋น๋ฐ ํค ๋ฐ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ ๋ ธ์ถ ์๋ณ
- ๋ด๋ถ ์ฝ๋ฉ ์ ์ฑ ์ํ
- ์กฐ์ง ํ์ค์ ๋ง์ถ ์ฌ์ฉ์ ์ง์ ๊ท์น ์์ฑ
- ์์ ๋ ๋ณด์ ๊ท์น ํฉ๊ณผ์ ํตํฉ
Semgrep ๊ท์น์ ๋ฐ๊ฒฌ ์ฌํญ์ CWE ๋ถ๋ฅ์ ์ผ์น์ํฌ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Semgrep์ ์์ฒด Swift ์ฝ๋์ CVE ์๋ณ์๋ฅผ ํ ๋นํ์ง ์์ผ๋ฉฐ, ์ ์ด์ ์ข ์์ฑ ์ทจ์ฝ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ์ง ์์ต๋๋ค.
Semgrep์ ์คํ ์์ค ๋ฒ์ ๊ณผ ์์ฉ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ๋ฒ์ ์ผ๋ก ์ ๊ณต๋๋ฉฐ, ์์ฉ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ๋ฒ์ ์ ์ค์ ์ง์ค์ ๋์๋ณด๋, ๋ฌธ์ ๋ถ๋ฅ ์ํฌํ๋ก ๋ฐ ์ ์ฑ ์ ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
CI์์์ ์คํ ๋์
Semgrep์ ์๋์ CI ํตํฉ์ ์ต์ ํ๋์ด ์์ต๋๋ค. ๋ช ๋ น์ค ๋๊ตฌ ๋๋ CI ํ๋ฌ๊ทธ์ธ์ ํตํด ์คํ๋๋ฉฐ, ์ฝ๋ ํธ์คํ ํ๋ซํผ๊ณผ ํตํฉ๋๋ ๊ตฌ์กฐํ๋ JSON ๋๋ SARIF ํ์์ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค.
์ผ๋ฐ์ ์ธ CI ์ฌ์ฉ ํจํด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์๋ก์ด ์ฝ๋ ํ์ธ์ ์ํด ํ ๋ฆฌํ์คํธ๋ฅผ ์ค์บํ๊ณ ์์ต๋๋ค.
- ์ ์๋ ๊ท์น ์๋ฐ์ ๋ํ ์ ์ฑ ๊ธฐ๋ฐ ๋ณํฉ ์ฐจ๋จ
- ์์ฝ๋ ์ ์ฅ์ ์ ์ฒด ์ค์บ
- GitHub ๋๋ GitLab ๋ณด์ ๋์๋ณด๋์์ ํตํฉ
Semgrep์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ธต์ ์ธ ํ๋ก์์ ๊ฐ ๋ถ์๋ณด๋ค๋ ํจํด ๊ธฐ๋ฐ ํ๊ฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์คํ ์๊ฐ์ด ๋น ๋ฆ ๋๋ค. ๋ฐ๋ผ์ ์ง์ฐ ์๊ฐ ์ ์ฝ์ผ๋ก ์ธํด ๊ณ ์ฑ๋ฅ SAST ์์ง์ ์ฌ์ฉํ ์ ์๋ ๊ณ ๋น๋ ํ์ดํ๋ผ์ธ์ ์ ํฉํฉ๋๋ค.
ํ์ง๋ง ๊ท์น์ ์ ํ๋๋ ๊ตฌ์ฑ ํ์ง์ ํฌ๊ฒ ์ข์ฐ๋ฉ๋๋ค. ์ง๋์น๊ฒ ๊ด๋ฒ์ํ ํจํด์ ์คํ์ ๋ฐ์์ํฌ ์ ์๊ณ , ์ง๋์น๊ฒ ์ข์ ๊ท์น์ ์ํฉ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ์ทจ์ฝ์ ์ ๋์น ์ ์์ต๋๋ค.
๊ธฐ์ ๊ท๋ชจ ํ์ฅ์ ํ์ค
Semgrep์ ์ ์ฐํ ๊ท์น ๊ด๋ฆฌ ๋ชจ๋ธ ๋๋ถ์ ๋ถ์ฐ๋ ํ ํ๊ฒฝ์์๋ ํจ๊ณผ์ ์ผ๋ก ํ์ฅํ ์ ์์ต๋๋ค. ์ค์ ์ง์ค์ ์ ์ฑ ์ ์ฅ์๋ฅผ ํตํด ํ์คํ๋ ๊ท์น ์ ์ฉ์ด ๊ฐ๋ฅํ๋ฉฐ, ๊ฐ๋ณ Swift ํ๋ก์ ํธ์ ๋ง๊ฒ ์ธ๋ถ์ ์ธ ์ฌ์ฉ์ ์ ์๋ ์ง์ํฉ๋๋ค.
์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ ์ํ CI ์คํ
- ์ฌ์ฉ์ ์ง์ ๊ท์น ํ์ฅ์ฑ
- ๊ฐ๋ฐ์ ์นํ์ ์ธ ํตํฉ
- ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์ค์ ์ง์ค์ ๊ฑฐ๋ฒ๋์ค ์ต์
์ ํ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ ํ์ ์ธ ์ฌ์ธต ๋ฐ์ดํฐ ํ๋ฆ ๋ชจ๋ธ๋ง
- ๋ค์ดํฐ๋ธ ํธ์ถ ๊ทธ๋ํ ์ ๋ฐ์ ๊ฑธ์น ์ทจ์ฝ์ฑ ์ถ๋ก ์์
- ๋ด์ฅ๋ ์ข ์์ฑ CVE ์ถ์ ๊ธฐ๋ฅ ์์
- ์ ํ์ฑ์ ์ํ ๊ท์น ์์ฑ ํ์ง์ ๋ํ ์์กด
DevSecOps ์ฑ์๋๊ฐ ๋์ ๊ธฐ์ ์์๋ Semgrep์ด ๋งค์ฐ ์ ์ฐํ ์ ์ฑ ์ํ ์์ง ์ญํ ์ ํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ฒด๊ณ์ ์ธ ๊ท์น ๊ด๋ฆฌ ์ฒด๊ณ๊ฐ ๋ถ์กฑํ ์กฐ์ง์์๋ ๊ตฌ์ฑ์ด ๋ณต์กํ๊ฒ ์ฝํ ํจ๊ณผ๊ฐ ๋จ์ด์ง ์ ์์ต๋๋ค.
๊ฐ๊ฒฉ ํน์ง
Semgrep์ ๋ฌด๋ฃ ์คํ ์์ค ๋ฒ์ ๊ณผ ์์ฉ SaaS ํ๋ซํผ์ ์ ๊ณตํฉ๋๋ค. ๊ธฐ์ ์ฉ ๊ฐ๊ฒฉ์ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฅ์ ์, ๊ฐ๋ฐ์ ์ข์ ์ ๋๋ ์ฌ์ฉ๋ ์งํ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฑ ์ ๋ฉ๋๋ค.
์ด ๋น์ฉ ๊ณ ๋ ค ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ค์ ์ง์ค์ ๋์๋ณด๋ ๊ตฌ๋ ๋ฃ
- ๊ท์น ์์ฑ ๋ฐ ์ ์ง ๊ด๋ฆฌ ์ค๋ฒํค๋
- CI ํตํฉ ์์ง๋์ด๋ง
- ๋ณด์ ์์ง๋์ด๋ง ๊ฒํ ํ๋ก์ธ์ค
์คํ์์ค ๋ฒ์ ์ ์ง์ ์ ์ธ ๋ผ์ด์ ์ค ๋น์ฉ์ ์ค์ฌ์ฃผ์ง๋ง, ๊ด๋ฆฌ ์ฑ ์์ ์ ์ ์ผ๋ก ๋ด๋ถ ํ์ผ๋ก ์ด์ ๋ฉ๋๋ค.
๊ตฌ์กฐ์ ํ๊ณ
Semgrep์ ์์ ํ ํ๋ก์์ ๊ฐ ๋ฐ์ดํฐ ํ๋ฆ ๊ทธ๋ํ๋ฅผ ๊ตฌ์ฑํ์ง ์์ต๋๋ค. ๋ณต์กํ Swift ๋์์ฑ ๋ชจ๋ธ, ๋น๋๊ธฐ ํจํด ๋๋ ๊ฐ์ ํธ์ถ ์ฒด์ธ์ ํจํด ๊ธฐ๋ฐ ํ์ง์์ ์์ ํ ํํ๋์ง ์์ ์ ์์ต๋๋ค.
๋ํ Semgrep์ ์์ฒด์ ์ธ ์ํํธ์จ์ด ๊ตฌ์ฑ ๋ถ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ๊ธฐ์ ์ ์ข ์์ฑ ์์ค์ ์ํ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ณ๋์ SCA ๋๊ตฌ๋ฅผ ํตํฉํด์ผ ํฉ๋๋ค.
๊ธฐ์ Swift ์ํ๊ณ์์ Semgrep์ ์ ์ฐํ๊ณ DevSecOps์ ๋ถํฉํ๋ ์ ์ ์ค์บ๋ ์์ง์ผ๋ก ๊ธฐ๋ฅํฉ๋๋ค. ๋ฐ์ด๋ ์ ์์ฑ๊ณผ CI ํจ์จ์ฑ์ ์ ๊ณตํ์ง๋ง, ์ฌ์ธต์ ์ธ ํ๋ก๊ทธ๋จ ๋ชจ๋ธ๋ง ๊ธฐ๋ฅ์ด ์ ํ์ ์ด๋ฏ๋ก ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๊ณ์ธตํ ๋ณด์ ์ํคํ ์ฒ์ ํตํฉํด์ผ ํฉ๋๋ค.
GitHub ๊ณ ๊ธ ๋ณด์
๊ณต์ ์ฌ์ดํธ: https://github.com/security/advanced-security
GitHub Advanced Security๋ GitHub ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ง์ ํตํฉ๋ ํ๋ซํผ ์์ค์ ๋ณด์ ๊ธฐ๋ฅ์ ๋๋ค. ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์ ํ ์คํธ, ์ข ์์ฑ ์ทจ์ฝ์ ๋ชจ๋ํฐ๋ง, ๋น๋ฐ ํค ์ค์บ ๊ธฐ๋ฅ์ ํตํฉ๋ ๊ฐ๋ฐ ์ํฌํ๋ก ๋ด์์ ์ ๊ณตํฉ๋๋ค. GitHub์์ ํธ์คํ ๋๋ ์ํฐํ๋ผ์ด์ฆ Swift ํ๊ฒฝ์ ๊ฒฝ์ฐ, ์ธ๋ถ ์๋ฒ ์ธํ๋ผ ์์ด๋ CI(์ง์์ ํตํฉ)์ ์ต์ ํ๋ ๋ณด์ ์ ์ด ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํฉ๋๋ค.
๊ฑด์ถ ๋ชจ๋ธ
GitHub Advanced Security๋ ์ ์ฅ์ ํธ์คํ ํ๋ซํผ ๋ด์ ๋ด์ฅ๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ๋ถ์ ๊ณ์ธต์ผ๋ก ์๋ํฉ๋๋ค. ์ ์ ๋ถ์์ ์์ค ์ฝ๋๋ฅผ ์ฟผ๋ฆฌ ๊ฐ๋ฅํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ๋ณํํ์ฌ ์๋ฏธ๋ก ์ ์ฝ๋ ๋ถ์์ ์ํํ๋ CodeQL์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ๋ณด์ ์ฟผ๋ฆฌ๋ ์ธ์ ์ ์ทจ์ฝ์ , ์์ ํ์ง ์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ์์ ํ์ง ์์ API ์ฌ์ฉ๊ณผ ๊ด๋ จ๋ ํจํด์ ํ๊ฐํฉ๋๋ค.
Swift ํ๋ก์ ํธ์ ๊ฒฝ์ฐ GitHub ๊ณ ๊ธ ๋ณด์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- CodeQL ๊ธฐ๋ฐ ์ ์ ๋ณด์ ๋ถ์
- CVE ๋งคํ์ ํตํ ์ข ์์ฑ ์ทจ์ฝ์ ๋ชจ๋ํฐ๋ง
- ์์ค ๊ธฐ๋ก ๋ฐ ์ปค๋ฐ์์ ๋น๋ฐ ํค ๊ฐ์ง
- ํ ๋ฆฌํ์คํธ ์์ค ๋ณด์ ์ฃผ์
- ์ง์ ๋ณดํธ ๊ท์น์ ํตํ ์ ์ฑ ์ํ
๋ ๋ฆฝํ ๋ฆฐํฐ์ ๋ฌ๋ฆฌ ์ด ํ๋ซํผ์ ์์ฒด ์ฝ๋ ๊ฒ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ข ์์ฑ ์์ค์ CVE ๋ ธ์ถ๊ณผ ์ฐ๊ด์ํต๋๋ค. ์ข ์์ฑ ์ค์บ์ ํตํด ์ทจ์ฝํ ํจํค์ง๋ฅผ ์๋ณํ๊ณ ๊ณต๊ฐ ์ทจ์ฝ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ง์ถฐ ์ฌ๊ฐ๋ ์์ค์ ํ์ํฉ๋๋ค.
CI์์์ ์คํ ๋์
์ ์ ๋ถ์์ ์ผ๋ฐ์ ์ผ๋ก GitHub Actions ์ํฌํ๋ก๋ฅผ ํตํด ์คํ๋ฉ๋๋ค. CodeQL ์ค์บ์ ๋ค์๊ณผ ๊ฐ์ด ์คํ๋๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
- ํ ๋ฆฌํ์คํธ์ ๋ํด
- ๋ณดํธ๋ ๊ฐ์ง๋ก ๋ฐ์ด๋ผ ๋
- ์ ํด์ง ๊ฐ๊ฒฉ์ผ๋ก
- ๋ฆด๋ฆฌ์ค ํ๋ณด ๊ฒ์ฆ์ ์ผํ์ผ๋ก
์ข ์์ฑ ๊ฒ์ฌ๋ ํจํค์ง ๋งค๋ํ์คํธ๋ฅผ ๋ถ์ํ๊ณ ์ทจ์ฝ์ ๊ณต๊ฐ๋ฅผ ๋ชจ๋ํฐ๋งํ์ฌ ์ง์์ ์ผ๋ก ์๋ํฉ๋๋ค.
์คํ ์๊ฐ์ ์ ์ฅ์ ํฌ๊ธฐ์ ์ฟผ๋ฆฌ ๋ณต์ก์ฑ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. CodeQL ๋ถ์์ ์ค์บ ๊น์ด์ ํ์ดํ๋ผ์ธ ์คํ ์๊ฐ ๊ฐ์ ๊ท ํ์ ๋ง์ถ๊ธฐ ์ํด ์กฐ์ ์ด ํ์ํ ์ ์์ต๋๋ค. ๋ถ์์ ์ ์ฅ์ ํ๋ซํผ์ ํตํฉ๋์ด ์์ผ๋ฏ๋ก ๊ฒฐ๊ณผ๋ ํ ๋ฆฌํ์คํธ์ ๋ณด์ ๋์๋ณด๋์ ์ง์ ํ์๋ฉ๋๋ค.
๊ธฐ์ ๊ท๋ชจ ํ์ฅ์ ํ์ค
GitHub Advanced Security๋ GitHub Enterprise๋ฅผ ํ์ค์ผ๋ก ์ฌ์ฉํ๋ ์กฐ์ง์ ํจ๊ณผ์ ์ผ๋ก ํ์ฅ ๊ฐ๋ฅํฉ๋๋ค. ์ค์ ์ง์ค์ ์ ์ฑ ์ํ, ์กฐ์ง ์์ค ๋ณด์ ๋์๋ณด๋ ๋ฐ ์ก์ธ์ค ์ ์ด๋ ๊ธฐ์ ๊ฑฐ๋ฒ๋์ค ๊ตฌ์กฐ์ ์ผ์นํฉ๋๋ค.
์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ์์ ๋ค์ดํฐ๋ธ ํตํฉ
- ์ฝ๋ ์ทจ์ฝ์ ๋ฐ ์ข ์์ฑ CVE์ ๋ํ ํตํฉ๋ ๊ด์
- ๊ณผ๊ฑฐ ์ ์ฅ์ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ํฌํจํ ๋น๋ฐ ์ค์บ
- ์ต์ํ์ ์ธํ๋ผ ๊ตฌ์ถ ๋น์ฉ
ํ์ง๋ง ๊ตฌ์กฐ์ ๊ณ ๋ ค ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํธ์คํ ํ๋ซํผ์ผ๋ก์ GitHub์ ๋ํ ์์กด์ฑ
- ์ ์ฉ SAST ์์ง์ ๋นํด ์ฌ์ฉ์ ์ง์ ๊น์ด๊ฐ ์ ํ์ ์ ๋๋ค.
- ๊ฐ๋ฐ์ ๋ผ์ด์ ์ค์ ๋ฐ๋ฅธ ์ ์ฌ์ ๋น์ฉ ์ํฅ
- ๋ถ์ ๊น์ด๋ ๋ด๋ถ์ ์ผ๋ก ํ์ฅ๋์ง ์๋ ํ ๋ฏธ๋ฆฌ ์ ์๋ ์ฟผ๋ฆฌ ํฉ์ ์ํด ์ ํ๋ฉ๋๋ค.
์ ์ฅ์ ํธ์คํ ๋ฐฉ์์ด ์๋ก ๋ค๋ฅด๊ฑฐ๋ ์จํ๋ ๋ฏธ์ค ์์ค ์ ์ด ์์คํ ์ ์ฌ์ฉํ๋ ์กฐ์ง์ ํตํฉ ๋ฌธ์ ์ ์ง๋ฉดํ ์ ์์ต๋๋ค.
๊ฐ๊ฒฉ ํน์ง
GitHub Advanced Security๋ GitHub Enterprise ํ๋์ฉ ์ ๋ฃ ์ถ๊ฐ ๊ธฐ๋ฅ์ ๋๋ค. ๊ฐ๊ฒฉ์ ์ผ๋ฐ์ ์ผ๋ก ํ์ฑ ์ปค๋ฏธํฐ ์ ๋๋ ์ ์ฅ์ ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฑ ์ ๋ฉ๋๋ค.
๋น์ฉ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฌ์ฉ์๋ณ ๋ผ์ด์ผ์ฑ
- CI ์ปดํจํ ์๋น๋
- ๊ด๋ฆฌ ๊ตฌ์ฑ ์ค๋ฒํค๋
- ๊ณ ๊ธ ์ ์ฑ ์ ์ํ ์ฌ์ฉ์ ์ง์ CodeQL ์ฟผ๋ฆฌ ๊ฐ๋ฐ
ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๋ชจ๋ธ์ ์ธํ๋ผ ๊ด๋ฆฌ ๋ถ๋ด์ ์ค์ฌ์ฃผ์ง๋ง, ํ๋ซํผ ์ฌ์ฉ๋์ ๋ฐ๋ฅธ ๋ฐ๋ณต์ ์ธ ๊ตฌ๋ ๋น์ฉ์ด ๋ฐ์ํฉ๋๋ค.
๊ตฌ์กฐ์ ํ๊ณ
CodeQL์ ์๋ฏธ ๋ถ์์ ๊ฐ๋ฅํ๊ฒ ํ์ง๋ง, ํน์ ์์ธ์ ์ธ ์ทจ์ฝ์ ๋ชจ๋ธ๋ง ์๋๋ฆฌ์ค์์๋ ์ ๋ฌธ์ ์ธ ์ํฐํ๋ผ์ด์ฆ SAST ์์ง๋งํผ ์ฌ์ธต์ ์ธ ๋ถ์์ ์ ๊ณตํ์ง ๋ชปํ ์ ์์ต๋๋ค. ๋ํ ์ ์ ๋ถ์์ GitHub์ ํธ์คํ ๋ ์ ์ฅ์๋ก ์ ํ๋ฉ๋๋ค.
์ข ์์ฑ ๊ฒ์ฌ๋ ์๋ ค์ง CVE๋ฅผ ์๋ณํ์ง๋ง ๋ฐํ์ ๋๋ฌ ๊ฐ๋ฅ์ฑ์ด๋ ์ปจํ ์คํธ ์ ์ฉ ๊ฐ๋ฅ์ฑ์ ๋ณธ์ง์ ์ผ๋ก ํ๋จํ์ง๋ ์์ต๋๋ค. ๋๋ฌ ๊ฐ๋ฅ์ฑ ๋ถ์์ด ํ์ํ ๊ธฐ์ ์ ๋ณด์์ ์ธ ๋๊ตฌ๋ฅผ ํตํฉํด์ผ ํฉ๋๋ค.
GitHub์์ ํธ์คํ ๋๋ ์ํฐํ๋ผ์ด์ฆ Swift ์ํ๊ณ์์ GitHub Advanced Security๋ ์ ์ ๋ถ์, CVE ๋ชจ๋ํฐ๋ง ๋ฐ ๋น๋ฐ ํค ํ์ง๋ฅผ ๊ฒฐํฉํ ํตํฉ๋ ๊ฑฐ๋ฒ๋์ค ์งํฅ ๋ณด์ ๊ณ์ธต์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ์ฒด๊ณ์ ์ธ CI ๊ฒ์ดํธํคํ๊ณผ ์ฐ๊ณ๋ ๋ ํนํ ํจ๊ณผ์ ์ด์ง๋ง, ๊ท์ ๊ฐ ์๊ฒฉํ๊ฑฐ๋ ์ํคํ ์ฒ๊ฐ ๋งค์ฐ ๋ณต์กํ ํ๊ฒฝ์์๋ ์ถ๊ฐ์ ์ธ ๋ณด์ ๊ฐํ๊ฐ ํ์ํ ์ ์์ต๋๋ค.
NowSecure
๊ณต์ ์ฌ์ดํธ: https://www.nowsecure.com
NowSecure๋ iOS ๋ฐ Android ์ํ๊ณ์ ํนํ๋ ์์ฉ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์ ํ๋ซํผ์ ๋๋ค. ์ผ๋ฐ์ ์ธ ์ ์ ๋ถ์ ๋๊ตฌ์ ๋ฌ๋ฆฌ NowSecure๋ ์ ์ ๋ถ์, ๋์ ๋ถ์ ๋ฐ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์ ์ต์ ํ๋ ๋ณด์ ํ๊ฐ ๊ธฐ๋ฅ์ ๊ฒฐํฉํฉ๋๋ค. ํนํ ๊ณต์ฉ ๋๋ ๊ธฐ์ ์ฉ ์ฑ ์คํ ์ด๋ฅผ ํตํด ๋ฐฐํฌ๋๋ iOS ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ฌ์ผ๋ก ํ๋ ๊ธฐ์ Swift ํ๊ฒฝ์์ NowSecure๋ ๊ด๋ฒ์ํ ๋ค๊ตญ์ด SAST ์์ง๋ณด๋ค๋ ๋ชจ๋ฐ์ผ ๋ณด์ ๋ณด์ฆ ๊ณ์ธต ์ญํ ์ ํฉ๋๋ค.
๊ฑด์ถ ๋ชจ๋ธ
NowSecure๋ ์ฃผ๋ก ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ํ๋ซํผ์ผ๋ก ์๋ํ๋ฉฐ, ์ปดํ์ผ๋ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฌผ๋ก ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์์ค ์ฝ๋๋ ๋ถ์ํฉ๋๋ค. Swift ๊ธฐ๋ฐ iOS ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ, ์ด ํ๋ซํผ์ ๋ค์์ ํ๊ฐํฉ๋๋ค.
- ์์ ํ์ง ์์ API ์ฌ์ฉ ํจํด
- ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ์ํธํ ์ค์ ์ค๋ฅ
- ๋คํธ์ํฌ ํต์ ์ทจ์ฝ์
- ๋ฐ์ด๋๋ฆฌ ์์ค ๋ณด์ ์์ฑ
- ๊ท์ ์ฐ์ ์ ์ํ ๊ท์ ์ค์ ์ ๋ ฌ
๊ตฌ๋ฌธ ์์ค ๋ฆฐํฐ์ ๋ฌ๋ฆฌ NowSecure๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ถ์ํ์ฌ ๋ฐํ์ ๊ด๋ จ ๊ตฌ์ฑ ์ค๋ฅ๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค. ์ ์ ๊ฒ์ฌ์ ๋์ ํ ์คํธ๋ฅผ ๊ฒฐํฉํ์ฌ ์์ค ์์ค ํจํด ๋ถ์๋ง์ผ๋ก๋ ๋๋ฌ๋์ง ์์ ์ ์๋ ์ทจ์ฝ์ ์ ์๋ณํฉ๋๋ค.
๋ฐ๊ฒฌ ์ฌํญ์ OWASP Mobile Top 10 ๋ฐ CWE ๋ถ๋ฅ์ ๊ฐ์ ์ ๊ณ์์ ์ธ์ ํ๋ ๋ถ๋ฅ ์ฒด๊ณ์ ๋ฐ๋ผ ๋ถ๋ฅ๋ฉ๋๋ค. CVE ์๋ณ์๋ ์ผ๋ฐ์ ์ผ๋ก ์์ฒด Swift ์ฝ๋๋ณด๋ค๋ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ทจ์ฝ์ ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
CI์์์ ์คํ ๋์
NowSecure๋ ์๋ํ๋ ์ฑ ์ ๋ก๋ ๋ฐ ์ค์บ ํธ๋ฆฌ๊ฑฐ๋ฅผ ํตํด CI ํ์ดํ๋ผ์ธ์ ํตํฉ๋ฉ๋๋ค. Swift ์ ํ๋ฆฌ์ผ์ด์ ์ CI ํ๊ฒฝ์์ ๋น๋๋๊ณ ์๋ช ๋ ํ ๋ถ์์ ์ํด NowSecure ํ๋ซํผ์ผ๋ก ์ ์ถ๋ฉ๋๋ค.
์ผ๋ฐ์ ์ธ CI ํจํด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฌ์ ์ถ์ ๋ณด์ ๊ฒ์ฆ ์ค์บ
- ์ด์ ํ๊ฒฝ ๋น๋์ ๋ํ ๋ณด์ ํ๊ฐ ์ผ์
- ๊ท์ ์ค์ ์ค์ฌ์ ์ ๊ธฐ ๊ฐ์ฌ
- ๋ฌธ์ ํด๊ฒฐ ์ถ์ ์ ์ํ ํฐ์ผํ ์์คํ ๊ณผ์ ํตํฉ
๋ถ์์ ๋ฐ์ด๋๋ฆฌ ๊ฒ์ฌ ๋ฐ ๋์ ๊ตฌ์ฑ ์์๊ฐ ํฌํจ๋๋ฏ๋ก ์คํ ์๊ฐ์ ์ผ๋ฐ์ ์ผ๋ก ์์ ์์ค ์์ค ๋๊ตฌ๋ณด๋ค ์ค๋ ๊ฑธ๋ฆฝ๋๋ค. ๋ฐ๋ผ์ NowSecure ์ค์บ์ ๋น๋ฒํ ํ ๋ฆฌํ์คํธ ๊ฒ์ฌ๋ณด๋ค๋ ๋ฆด๋ฆฌ์ค ์ ํจ์ฑ ๊ฒ์ฌ ๊ด๋ฌธ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๊ธฐ์ ๊ท๋ชจ ํ์ฅ์ ํ์ค
NowSecure๋ ๊ธ์ต, ์๋ฃ, ์ ๋ถ์ ๊ฐ์ ๊ท์ ๋์ ๋๋ ๊ณ ์ํ ๋ถ์ผ์์ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ์กฐ์ง์ ์ํด ์ค๊ณ๋์์ต๋๋ค. ์ผ์์ ์ธ ๊ฐ๋ฐ ์ฝ๋ ๊ฒ์ฌ๋ณด๋ค๋ ๊ท์ ์ค์ ๋ฌธ์ํ ๋ฐ ๋ณด์ ๊ฒ์ฆ์ ์ค์ ์ ๋ก๋๋ค.
์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ ํนํ ์ทจ์ฝ์ฑ ๋ชจ๋ธ๋ง
- ์ด์ง ์์ค ๊ฒ์ฌ ๊ธฐ๋ฅ
- ๊ท์ ์ค์ ๋ณด๊ณ ์ง์
- ๋ฐํ์ ๊ตฌ์ฑ ์ค๋ฅ ์ํ์ ๋ํ ๋ณด์ฅ
๊ตฌ์กฐ์ ์ ์ฝ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์์ ๋ํ ์ข์ ์ด์
- ์๋ฒ ์ธก Swift ์๋น์ค์๋ ์ ์ฉ ๊ฐ๋ฅ์ฑ์ด ์ ํ์ ์ ๋๋ค.
- ์ฌ๋ ์๋ ๊ตฌ์กฐ์ ์ฝ๋ ์ ์ง๋ณด์์ฑ ์งํ ์์
- ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์ค์บ๋ ์ธํ๋ผ์ ๋ํ ์์กด์ฑ
๋ฐฑ์๋ ์๋น์ค๋ฅผ ํฌํจํ๋ ๋ค์ํ Swift ํฌํธํด๋ฆฌ์ค๋ฅผ ๊ด๋ฆฌํ๋ ๊ธฐ์ ์ ๊ฒฝ์ฐ NowSecure๋ ๋ชจ๋ฐ์ผ ๋ถ๋ฌธ๋ง ์ง์ํ๋ฏ๋ก ๋ณด๋ค ํฌ๊ด์ ์ธ ์ ์ ๋ถ์ ์๋ฃจ์ ๊ณผ ํจ๊ป ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๊ฐ๊ฒฉ ํน์ง
NowSecure๋ ์ ๋ฃ ๊ตฌ๋ ๊ธฐ๋ฐ ํ๋ซํผ์ ๋๋ค. ๊ฐ๊ฒฉ์ ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์, ๊ฒ์ฌ ๋น๋ ๋ฐ ๊ธฐ์ ์ ๊ท์ ์ค์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
๋น์ฉ ๊ณ ๋ ค ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๋ณ ๊ตฌ๋ ๋ฃ
- CI ํตํฉ ์์ง๋์ด๋ง
- ๋ณด์ ๊ฒํ ๋ฐ ์ฐ์ ์์ ๊ฒฐ์ ๋ฆฌ์์ค
- ์ง์์ ์ธ ๊ท์ ์ค์ ๋ฌธ์ํ ํ๋ก์ธ์ค
์ด ๋๊ตฌ๋ ํน์ ๋ณด์ ๊ฒ์ฆ ํ๋ซํผ์ผ๋ก ์๋ํ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ธ ๋ฆฐํ ๋๊ตฌ์ ๋นํด ๋ผ์ด์ ์ค ๋น์ฉ์ด ๋ ๋์ ์ ์์ต๋๋ค.
๊ตฌ์กฐ์ ํ๊ณ
NowSecure๋ ์ฌ์ธต์ ์ธ ํ๋ก์์ ๊ฐ ์ฝ๋ ๋ถ์์ ์ํ ์์ค ๋ ๋ฒจ SAST ์์ง์ ๋์ฒดํ์ง ์์ต๋๋ค. ์ด ์ ์ ๊ฒ์ฌ ๊ตฌ์ฑ ์์๋ ์ํคํ ์ฒ ์ฝ๋ ๋ณต์ก์ฑ ๋ชจ๋ธ๋ง๋ณด๋ค๋ ๋ชจ๋ฐ์ผ ๋ณด์ ์ํ์ ์ค์ ์ ๋ก๋๋ค.
๋ํ, ์ด ๋๊ตฌ๋ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๋ด์ ์ข ์์ฑ ์ทจ์ฝ์ ์ ์๋ณํ์ง๋ง, ์คํ ๊ฒฝ๋ก ๋๋ฌ ๊ฐ๋ฅ์ฑ์ด๋ ๊ธฐ์ ์ ๋ฐ์ ์ธ์ด ๊ฐ ๊ฑฐ๋ฒ๋์ค๋ฅผ ๋ณธ์ง์ ์ผ๋ก ๋ชจ๋ธ๋งํ์ง๋ ์์ต๋๋ค.
๊ธฐ์ Swift ์ํ๊ณ ๋ด์์ NowSecure๋ iOS ์ ํ๋ฆฌ์ผ์ด์ ์ํ์ ๋ง์ถ ๋ชจ๋ฐ์ผ ๋ณด์ ๋ณด์ฆ ๊ณ์ธต ์ญํ ์ ํฉ๋๋ค. ์ด๋ ๊ท์ ์ค์ ๊ฒ์ฆ ๋ฐ ๋ฐํ์ ๋ณด์ ์ํ๋ฅผ ๊ฐํํ์ง๋ง, ๊ธฐ์ ์ ๋ฐ์ ๊ฑธ์น ๋ณด์์ ์ํด์๋ ๋ณด๋ค ๊ด๋ฒ์ํ ์ ์ ๋ถ์ ๋ฐ ์ข ์์ฑ ๊ด๋ฆฌ ์ํคํ ์ฒ์ ํตํฉ๋์ด์ผ ํฉ๋๋ค.
SwiftFormat
๊ณต์ ์ฌ์ดํธ: https://github.com/nicklockwood/SwiftFormat
SwiftFormat์ Swift ์ฝ๋๋ฒ ์ด์ค ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด๋ ์ฝ๋ ์คํ์ผ๊ณผ ๊ตฌ๋ฌธ ์ ๊ทํ๋ฅผ ์ ์ฉํ๋ ๋ฐ ์ค์ ์ ๋ ์คํ ์์ค Swift ํฌ๋งทํ ๋๊ตฌ์ ๋๋ค. ๋ณด์ ์ค์ฌ์ ์ ์ ๋ถ์๊ธฐ๋ ๊ฒฐํจ ํ์ง ์์ง๊ณผ๋ ๋ฌ๋ฆฌ, SwiftFormat์ ์๋ํ๋ ํฌ๋งทํ ๊ท์น์๋ง ์ง์คํฉ๋๋ค. ๊ธฐ์ ํ๊ฒฝ์์ SwiftFormat์ ๋ ๋ฆฝ์ ์ธ ํ์ง ๊ด๋ฆฌ ์๋ฃจ์ ์ด๋ผ๊ธฐ๋ณด๋ค๋ ๋ฆฐํฐ ๋ฐ SAST ํ๋ซํผ๊ณผ ํจ๊ป ๋ณด์์ ์ธ ์ฝ๋ ๊ด๋ฆฌ ๋๊ตฌ๋ก ํ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๊ฑด์ถ ๋ชจ๋ธ
SwiftFormat์ ์์ค ์ฝ๋ ๊ฐ ๋ณํ ์์ง์ผ๋ก ์๋ํฉ๋๋ค. Swift ์ฝ๋๋ฅผ ๊ตฌ์กฐํ๋ ํํ์ผ๋ก ํ์ฑํ๊ณ , ๊ตฌ์ฑ ๊ฐ๋ฅํ ํฌ๋งทํ ๋ณํ์ ์ ์ฉํ ํ ์์ ๋ ์ฝ๋๋ฅผ ๋์คํฌ์ ๋ค์ ์ ์ฅํฉ๋๋ค. ์ด ์ํคํ ์ฒ๋ ๊ฒฐํจ ์๋ณ๋ณด๋ค๋ ๊ฒฐ์ ๋ก ์ ์ถ๋ ฅ์ ์ค์ ์ ๋ก๋๋ค.
ํต์ฌ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ค์ ๊ฐ๋ฅํ ๊ท์น์ ๊ธฐ๋ฐํ ์๋ ์ฝ๋ ํฌ๋งทํ
- ์ฌ์ฉ์ ์ ์ ์คํ์ผ ๊ฐ์ด๋๋ผ์ธ ์ง์
- CLI ์คํ ๋ฐ Xcode ํตํฉ
- ํ๋ฆฌ์ปค๋ฐ ๋ฐ CI ํ ํธํ์ฑ
SwiftFormat์ ์๋ฏธ๋ก ์ ์ทจ์ฝ์ ๋ถ์, ํ๋ก์์ ๊ฐ ๋ชจ๋ธ๋ง ๋๋ ์ข ์์ฑ ๊ฒ์ฌ๋ฅผ ์ํํ์ง ์์ต๋๋ค. ๋ํ CVE๋ฅผ ํ์งํ๊ฑฐ๋ ๋ฐ๊ฒฌ๋ ์ทจ์ฝ์ ์ ์ทจ์ฝ์ ๋ถ๋ฅ ์ฒด๊ณ์ ๋งคํํ์ง ์์ต๋๋ค. SwiftFormat์ ์ญํ ์ ๊ตฌ๋ฌธ ๋ฐ ์คํ์ผ ์ผ๊ด์ฑ ์ ์ง์๋ง ๊ตญํ๋ฉ๋๋ค.
CI์์์ ์คํ ๋์
CI ํ์ดํ๋ผ์ธ์์ SwiftFormat์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.
- ์ฝ๋ ๋ณํฉ ์ ์ ์ผ๊ด๋ ์์์ ์ ์ฉํ๊ธฐ ์ํ ์ฌ์ ์ปค๋ฐ ํ
- ํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋น๋๋ฅผ ์คํจ์ํค๋ CI ์ ํจ์ฑ ๊ฒ์ฌ ๋จ๊ณ
- ๋ธ๋์น ๊ฐ ์ฝ๋ ํ์คํ๋ฅผ ์ํ ์๋ ์์ ๋๊ตฌ
SwiftFormat์ ๊ตฌ๋ฌธ ์์ค์ ๊ตฌ์กฐ๋ง์ ๋์์ผ๋ก ๋ณํ์ ์ํํ๊ธฐ ๋๋ฌธ์ ๋๊ท๋ชจ Swift ์ ์ฅ์์์๋ ์คํ ์๊ฐ์ด ์ต์ํ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ง์ฐ ์๊ฐ์ ๋ฏผ๊ฐํ ๊ณ ๋น๋ ํ์ดํ๋ผ์ธ์ ์ ํฉํฉ๋๋ค.
ํ์ง๋ง ์์ค ํ์ผ์ ์ง์ ์์ ํ๊ธฐ ๋๋ฌธ์, ๊ฑฐ๋ฒ๋์ค ํ๋ก์ธ์ค์์๋ ์์ ์์ ์ด ์๋์ผ๋ก ์ ์ฉ๋ ์ง ์๋๋ฉด ๊ฐ๋ฐ์ ๊ฐ์ ์ด ํ์ํ ์ฐจ๋จ ์๋ฐ ์ฌํญ์ผ๋ก ๊ฐ์ฃผํ์ฌ ๊ฐ์ ์ ์ฉ๋ ์ง๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค.
๊ธฐ์ ๊ท๋ชจ ํ์ฅ์ ํ์ค
๊ธฐ์ ๊ท๋ชจ์์ SwiftFormat์ ์ฌ๋ฌ ํ๊ณผ ์ ์ฅ์์ ๊ฑธ์ณ ์ผ๊ด๋ ์คํ์ผ์ ์ ์ฉํ๋๋ก ์ง์ํฉ๋๋ค. ์ค์ ์ง์ค์ ํ ํ๋ฆฟ์ด๋ ๋ด๋ถ ํ๋ซํผ ์์ง๋์ด๋ง ํ์ค์ ํตํฉํ๋ฉด ์ฝ๋ ๊ฒํ ๋ฅผ ๋ณต์กํ๊ฒ ๋ง๋ค ์ ์๋ ์คํ์ผ ์ฐจ์ด๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ฒฐ์ ๋ก ์ ๋ฐ ์๋ ์์ ์ง์
- ๋ฎ์ ์ด์ ๊ฐ์ ๋น
- ๊ฐ๋ฐ์ ์ํฌํ๋ก์ฐ์์ ์๋ฒฝํ ํตํฉ
- ๋ผ์ด์ ์ค ๋น์ฉ ์์
์ ํ ์ฌํญ์ ๊ตฌ์กฐ์ ์ธ ๊ฒ์ ๋๋ค.
- ๊ฒฐํจ ๊ฐ์ง ์ ๋จ
- ์ทจ์ฝ์ ๋ชจ๋ธ๋ง ์์
- ๋ณต์ก์ฑ์ด๋ ์ ์ง๋ณด์์ฑ ์งํ ์์
- ๋ณด์ ๋๋ ๊ท์ ์ค์ ๋ถ๋ฅ ์ฒด๊ณ์์ ํตํฉ์ ์์ต๋๋ค.
๊ท์ ํ๊ฒฝ์์ SwiftFormat์ ๊ฐ๋ ์ฑ๊ณผ ๊ฒํ ํจ์จ์ฑ์ ํฅ์์์ผ ๊ฐ์ ์ ์ผ๋ก ๊ฑฐ๋ฒ๋์ค์ ๊ธฐ์ฌํ์ง๋ง ๋ณด์ ๋๋ ๊ฐ์ฌ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ์ง๋ ์์ต๋๋ค.
๊ฐ๊ฒฉ ํน์ง
SwiftFormat์ ์คํ ์์ค์ด๋ฉฐ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด์ ๋น์ฉ์ ํตํฉ ์์ง๋์ด๋ง, CI ๊ตฌ์ฑ ๋ฐ ๋ด๋ถ ๊ท์น ํ์คํ ๊ด๋ฆฌ๋ก ์ ํ๋ฉ๋๋ค.
์๋ฒ ๊ตฌ์ฑ ์์, ๊ตฌ๋ ๋ฃ ๋๋ ๊ธฐ์ ์ฉ ๋ผ์ด์ ์ค ๋ฑ๊ธ์ด ์์ต๋๋ค.
๊ตฌ์กฐ์ ํ๊ณ
SwiftFormat์ ํฌ๋งทํ ๊ณ์ธต์์๋ง ์๋ํฉ๋๋ค. ์คํ ๊ฒฝ๋ก, ๋ฐ์ดํฐ ํ๋ฆ, ๋์์ฑ ์ํ ๋๋ ์ข ์์ฑ ๋ ธ์ถ์ ํ๊ฐํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ํ ์ฐ์ ์์๋ฅผ ์ง์ ํ๊ฑฐ๋, ์์ ํ์ง ์์ ์ฝ๋ฉ ๊ตฌ์กฐ๋ฅผ ๊ฐ์งํ๊ฑฐ๋, ์ํคํ ์ฒ์ ๊ฑด์ ์ฑ์ ํ๊ฐํ ์ ์์ต๋๋ค.
๊ธฐ์ Swift ์ํ๊ณ์์ SwiftFormat์ ๊ธฐ๋ณธ์ ์ธ ์ฝ๋ ๊ด๋ฆฌ ๋๊ตฌ ์ญํ ์ ํฉ๋๋ค. SwiftFormat์ ์ผ๊ด์ฑ์ ํฅ์์ํค๊ณ ํ์ ๊ฐ๋ฐ ๊ณผ์ ์์ ๋ฐ์ํ๋ ๋ง์ฐฐ์ ์ค์ฌ์ฃผ์ง๋ง, ํฌ๊ด์ ์ธ ํ์ง ๋ฐ ์ํ ๊ด๋ฆฌ ํ๋ ์์ํฌ๋ฅผ ๊ตฌ์ถํ๋ ค๋ฉด ๋ฆฐํ , ์ ์ ๋ณด์ ํ ์คํธ, ์์กด์ฑ ๋ถ์ ์๋ฃจ์ ๊ณผ ํจ๊ป ์ฌ์ฉํด์ผ ํฉ๋๋ค.
Xcode ์ ์ ๋ถ์๊ธฐ
๊ณต์ ์ฌ์ดํธ: https://developer.apple.com/documentation/xcode/analyzing-your-app-s-code-for-problems
Xcode Static Analyzer๋ Apple์์ Xcode ๊ฐ๋ฐ ํ๊ฒฝ์ ์ง์ ํตํฉํ ๋ด์ฅ ์ ์ ๋ถ์ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๋ ๊ธฐ์ ๊ท๋ชจ์ ๊ด๋ฆฌ๋ณด๋ค๋ ์ฃผ๋ก ๋ก์ปฌ ๊ฐ๋ฐ ๋จ๊ณ์์ ์ด๊ธฐ ๊ฒฐํจ ๋ฐ๊ฒฌ์ ์ํด ์ค๊ณ๋์์ต๋๋ค. Swift ๊ธฐ๋ฐ iOS ๋ฐ macOS ํ๋ก์ ํธ์์๋ ๋ค์ดํฐ๋ธ ํด์ฒด์ธ์ ๋ด์ฅ๋ 1์ฐจ ์ง๋จ ๋๊ตฌ ์ญํ ์ ํฉ๋๋ค.
๊ฑด์ถ ๋ชจ๋ธ
Xcode ์ ์ ๋ถ์๊ธฐ๋ Clang ๋ฐ Swift ์ปดํ์ผ๋ฌ ํด์ฒด์ธ์ ์ผ๋ถ๋ก ์๋ํฉ๋๋ค. ๋ถ์ ๊ณผ์ ์์ ์คํ ๊ฒฝ๋ก๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๋ ๊ฒฝ๋ก ๊ฐ์ง ๊ฒ์ฌ๋ฅผ ์ํํ์ฌ ์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ค๋ฅ๋ฅผ ํ์งํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ด์, ๋ ผ๋ฆฌ ์ค๋ฅ ๋ฐ ํน์ ์์ ํ์ง ์์ API ์ฌ์ฉ์ด ํฌํจ๋ฉ๋๋ค.
Swift ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ๋ถ์๊ธฐ๋ ๋ค์ ์ฌํญ์ ์ค์ ์ ๋ก๋๋ค.
- ๋ ๊ฐ๋ฅ์ฑ ๋ฐ ์ ํ์ ์ค์ฉ
- ๋ฆฌ์์ค ๊ด๋ฆฌ ์ค๋ฅ
- ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์ผ์น
- API ์ค์ฉ ํจํด
- ๋์์ฑ ๊ด๋ จ ์ค์ฉ ์๋๋ฆฌ์ค
์ด ๋ถ์ ๋๊ตฌ๋ IDE ๋ด์์ ๋ก์ปฌ๋ก ์คํ๋๊ฑฐ๋ ๋ช ๋ น์ค ๋น๋๋ฅผ ํตํด ์คํ๋ฉ๋๋ค. ์ค์ ์ง์ค์ ๋์๋ณด๋, ๊ธฐ์ ์ ์ฑ ๊ด๋ฆฌ ๋๋ ํฌํธํด๋ฆฌ์ค ์ ์ฒด ๋ณด๊ณ ์ฒด๊ณ๋ ์ ๊ณตํ์ง ์์ต๋๋ค. ๋ถ์ ๊ฒฐ๊ณผ๋ ๊ฐ๋ฐ ํ๊ฒฝ ๋ด์ ์ง์ ํ์๋ฉ๋๋ค.
CVE ์๋ณ์๋ ํด๋น ๋ชจ๋ธ์ ์ผ๋ถ๊ฐ ์๋๋๋ค. ์ด ๋ถ์๊ธฐ๋ ์๋ ค์ง ์ทจ์ฝ์ ์๊ทธ๋์ฒ๋ ์ข ์์ฑ ์ํ์ด ์๋ ์ ์ฌ์ ์ธ ์ฝ๋ฉ ์ค๋ฅ๋ฅผ ์๋ณํฉ๋๋ค.
CI์์์ ์คํ ๋์
Xcode ์ ์ ๋ถ์๊ธฐ๋ CI ํ์ดํ๋ผ์ธ์์ ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ํตํด ํธ์ถํ ์ ์์ต๋๋ค. ํ์ง๋ง ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ ๊ฐ๋ฐ์๊ฐ ์ง์ ์คํํ๋ ๋ก์ปฌ ๋ถ์์ ๋๋ค.
CI ํ๊ฒฝ์์ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ง์ํ ์ ์์ต๋๋ค.
- ๋ณํฉ ์ ์ ํจ์ฑ ๊ฒ์ฌ ์ค์บ
- ์๋ํ๋ ๋น๋ ์๊ฐ ์ง๋จ
- ์น๋ช ์ ์ธ ๊ฒฐํจ์ ๋ํ ๊ธฐ๋ณธ ๊ฒ์ดํ
์คํ ์๊ฐ์ ์ผ๋ฐ์ ์ผ๋ก ๋น ๋ฅด๋ฉฐ ๋น๋ ์์ ๊ณผ ๋ฐ์ ํ๊ฒ ์ฐ๊ด๋์ด ์์ต๋๋ค. ์ปดํ์ผ๋ฌ ์ํฌํ๋ก์ ํตํฉ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ์ ์ธ ๊ตฌ์ฑ ์ค๋ฒํค๋๊ฐ ์ต์ํ๋ฉ๋๋ค.
ํ์ง๋ง ๊ธฐ์ ์์ ๋ฐ๊ฒฌ ์ฌํญ์ ์ฒด๊ณ์ ์ผ๋ก ์์งํ๊ณ ์ถ์ ํ๋ ค๋ฉด CI ์ถ๋ ฅ ํ์ ์ง์ ๋ฐ ์ค์ ์ง์ค์ ์ง๊ณ๋ฅผ ์ํ ์ถ๊ฐ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
๊ธฐ์ ๊ท๋ชจ ํ์ฅ์ ํ์ค
Xcode Static Analyzer๋ ์ ๊ทผ์ฑ์ด ๋งค์ฐ ๋ฐ์ด๋์ง๋ง ๊ธฐ์ ๊ฑฐ๋ฒ๋์ค ๋ฒ์์๋ ํ๊ณ๊ฐ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ฉ๋์ ์ ํฉํฉ๋๋ค.
- ์ด๊ธฐ ๊ฒฐํจ ์๋ฐฉ
- ์ง์ญ ๊ฐ๋ฐ์ ํผ๋๋ฐฑ ๋ฃจํ
- ๊ธฐ๋ณธ ์ ๋ขฐ์ฑ ๊ฒ์ฌ
์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Swift ๊ฐ๋ฐ๊ณผ์ ๋ค์ดํฐ๋ธ ํตํฉ
- ์ถ๊ฐ ๋ผ์ด์ ์ค ๋น์ฉ ์์
- ๊ฒฝ๋ก ๊ฐ์ง ๊ธฐ๋ฅ
- ๋ง์ฐฐ์ด ์ ์ ์ฑํ
๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด ๊ตฌ์กฐ์ ํ๊ณ๊ฐ ๋ช ํํด์ง๋ค:
- ์ค์ ์ง์ค์ ๊ด๋ฆฌ ๋์๋ณด๋ ์์
- ์ ์ฅ์ ๊ฐ ํตํฉ ์์
- ์ข ์์ฑ ์ทจ์ฝ์ ๊ฐ์์ฑ ์์
- ๊ท์น ๋ ผ๋ฆฌ์ ๋ํ ์ ํ์ ์ธ ์ฌ์ฉ์ ์ง์
์ฌ๋ฌ Swift ์ ์ฅ์๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ถ์ฐ๋ ํ์ ์ด์ํ๋ ๊ธฐ์ ์ ๊ฒฝ์ฐ, ํฌํธํด๋ฆฌ์ค ์์ค์ ๊ฐ๋ ๋ถ์กฑ์ผ๋ก ์ธํด ์ ๋ต์ ๊ฑฐ๋ฒ๋์ค ๊ฐ์น๊ฐ ์ ํ๋ฉ๋๋ค.
๊ฐ๊ฒฉ ํน์ง
Xcode Static Analyzer๋ Apple์ ๊ฐ๋ฐ์ ์ํ๊ณ์ ์ถ๊ฐ ๋น์ฉ ์์ด ํฌํจ๋์ด ์์ต๋๋ค. ๋ณ๋์ ๋ผ์ด์ ์ค, ๊ตฌ๋ ๋ฑ๊ธ ๋๋ ์ธํ๋ผ ์๊ตฌ ์ฌํญ์ด ์์ต๋๋ค.
์ด์ ๋น์ฉ์ ์ฃผ๋ก ๋ค์๊ณผ ๊ฐ์ ํญ๋ชฉ๊ณผ ๊ด๋ จ๋ฉ๋๋ค.
- ๊ฐ๋ฐ์ ๊ต์ก
- CI ํตํฉ ์คํฌ๋ฆฝํ
- ์ค์ ์ง์ค์ ์ถ์ ์ด ํ์ํ ๊ฒฝ์ฐ ์ถ๊ฐ ๋ณด๊ณ ๋๊ตฌ ์ ๊ณต
๊ตฌ์กฐ์ ํ๊ณ
์ด ๋ถ์๊ธฐ๋ ์ปดํ์ผ๋ฌ ํตํฉ ๊ฒ์ฌ๋ก ์ ํ๋๋ฉฐ, ์ ์ฉ SAST ์์ง๊ณผ ๊ฐ์ ์ฌ์ธต์ ์ธ ํ๋ก์์ ๊ฐ ์ทจ์ฝ์ ๋ชจ๋ธ๋ง์ ์ํํ์ง ์์ต๋๋ค. ๋ํ ์ํํธ์จ์ด ๊ตฌ์ฑ ๋ถ์์ด๋ ์ข ์์ฑ CVE ์ถ์ ๊ธฐ๋ฅ๋ ํตํฉ๋์ด ์์ง ์์ต๋๋ค.
๋ํ, ์ฐ๊ตฌ ๊ฒฐ๊ณผ๋ ์ผ๋ฐ์ ์ผ๋ก ์ง์ญ์ ์ด๋ฉฐ ์ํคํ ์ฒ ์ค์ฌ์ฑ์ด๋ ๋ฐํ์ ์ ๊ทผ์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ํ ๋งฅ๋ฝ์ ์ฐ์ ์์๊ฐ ๋ถ์กฑํฉ๋๋ค.
๊ธฐ์ ์ฉ Swift ์ํ๊ณ์์ Xcode Static Analyzer๋ ๋ด์ฅ๋ ์์ ์ฑ ๋ณดํธ ์ฅ์น ์ญํ ์ ํฉ๋๋ค. ๊ฐ๋ฐ์ ์์ค์ ์ฝ๋ ์ ํ์ฑ์ ํฅ์์ํค์ง๋ง, ๊ธฐ์ ์์ค์ ํ์ง ๊ด๋ฆฌ ๋ฐ ์ํ ์ ์ด๋ฅผ ๋ฌ์ฑํ๋ ค๋ฉด ์ค์ ์ง์ค์ ์ ์ ๋ถ์ ๋ฐ ๋ณด์ ํ๋ซํผ์ผ๋ก ๋ณด์๋์ด์ผ ํฉ๋๋ค.
Swift ์ ์ ์ฝ๋ ๋ถ์ ํ๋ซํผ ๋น๊ต ๋ถ์
์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์์ Swift์ฉ ์ ์ ๋ถ์ ์๋ฃจ์ ์ ์ ํํ ๋๋ ์ํคํ ์ฒ์ ๊น์ด, ๊ฑฐ๋ฒ๋์ค ๊ธฐ๋ฅ, CI ํตํฉ ๋ชจ๋ธ ๋ฐ ๊ตฌ์กฐ์ ์ ์ฝ ์กฐ๊ฑด์ ํ๊ฐํด์ผ ํฉ๋๋ค. ์์์ ์ค๋ช ํ ๋๊ตฌ๋ค์ ๊ฐ๋จํ ํฌ๋งทํ ์ ํธ๋ฆฌํฐ๋ถํฐ ์ํฐํ๋ผ์ด์ฆ ๊ท๋ชจ์ ๋ณด์ ๊ฑฐ๋ฒ๋์ค ํ๋ซํผ์ ์ด๋ฅด๊ธฐ๊น์ง ๋งค์ฐ ๋ค์ํฉ๋๋ค. ๋ค์ ๋น๊ต์์๋ ํ๋ฉด์ ์ธ ๊ธฐ๋ฅ ๋ชฉ๋ก๋ณด๋ค๋ ์ํคํ ์ฒ์ ์ฐจ์ด์ , ์ํ ๋ชจ๋ธ๋ง ์ ๊ทผ ๋ฐฉ์, ์คํ ํน์ฑ ๋ฐ ์ด์ ํ์ฅ์ฑ ๊ณ ๋ ค ์ฌํญ์ ์ค์ ์ ๋ก๋๋ค.
| ์๋จ | ์ฃผ์ ์ด์ | ๊ฑด์ถ ๋ชจ๋ธ | CI ํตํฉ ๋ชจ๋ธ | CVE/์ข ์์ฑ ์ฒ๋ฆฌ | ๊ธฐ์ ์ง๋ฐฐ๊ตฌ์กฐ ๊ฐ์ | ๊ตฌ์กฐ์ ํ๊ณ |
|---|---|---|---|---|---|---|
| ์ค์ํํธ๋ฆฐํธ | ์คํ์ผ ๊ฐ์ ๋ฐ ๊ธฐ๋ณธ ๊ท์น ๊ฒ์ฌ | ์ค์ ๊ฐ๋ฅํ ๊ท์น ์์ง์ ๊ฐ์ถ ๋ก์ปฌ ์์ค ๋ ๋ฒจ ๋ฆฐํฐ | CLI ์คํ, ๋น๋ ๋จ๊ณ ํตํฉ, ๋น ๋ฅธ ํ ๋ฆฌํ์คํธ ํ์ธ | CVE ๋งคํ ์์, ์ข ์์ฑ ๋ถ์ ์์ | ๋ฎ์; ๊ฑฐ๋ฒ๋์ค๋ฅผ ์ํด ์ธ๋ถ ์ง๊ณ๊ฐ ํ์ํจ | ์ ์ฐจ ๊ฐ ๋ชจ๋ธ๋ง ์์, ์ํ ์ฐ์ ์์ ์ง์ ์์, ํฌํธํด๋ฆฌ์ค ๋์๋ณด๋ ์์ |
| SwiftFormat | ์๋ ์ฝ๋ ์์ ์ง์ | ์์ค ๊ฐ ๋ณํ ์์ง | ์ปค๋ฐ ์ ํ , CI ํฌ๋งทํ ์ ํจ์ฑ ๊ฒ์ฌ | ์์ | ์ต์ํ์ ์์ ๊ด๋ฆฌ๋ง ํ์ํฉ๋๋ค. | ๊ฒฐํจ ํ์ง ๋ถ๊ฐ, ์ทจ์ฝ์ ๋ถ์ ๋ถ๊ฐ |
| Xcode ์ ์ ๋ถ์๊ธฐ | ์ปดํ์ผ๋ฌ ํตํฉ ๊ฒฐํจ ๊ฐ์ง | IDE ํตํฉ ๊ฒฝ๋ก ๋ฏผ๊ฐ ๋ถ์ | ๋น๋ ์๊ฐ ์ง๋จ, ์ ํ์ CI ํธ์ถ | ์์ | ์ ํ์ ์; ์ค์ ์ง์ค์ ๋ณด๊ณ ์์คํ ์์ | ํฌํธํด๋ฆฌ์ค ๊ฐ์์ฑ ์์, ์ข ์์ฑ ์ถ์ ๋ถ๊ฐ |
| ์๋ํ๋ธ | ์ค์ ์ง์ค์ ํ์ง ๊ด๋ฆฌ | ์๋ฒ ๊ธฐ๋ฐ ๋ค๊ตญ์ด ๋ถ์ ํ๋ซํผ | ์ค์บ๋ ๊ธฐ๋ฐ CI ์ ๋ก๋(ํ์ง ๊ฒ์ดํธ ํฌํจ) | Swift ์ฝ๋์ ๋ํ ๊ธฐ๋ณธ CVE ๋งคํ ๊ธฐ๋ฅ์ด ์์ผ๋ฏ๋ก SCA ํตํฉ์ด ํ์ํฉ๋๋ค. | ํ์ง ์งํ ๋ฐ ์ ์ฑ ์ํ ์ธก๋ฉด์์ ๋์ ์ ์๋ฅผ ๋ฐ์์ต๋๋ค. | ์ ํ์ ์ธ ์ฌ์ธต ์ค์ผ ๋ชจ๋ธ๋ง, ๋ด์ฅ๋ ์ข ์์ฑ CVE ๋๋ฌ ๊ฐ๋ฅ์ฑ ์์ |
| ์ฒดํฌ๋งํฌ์ค SAST | ์ฌ์ธต์ ์ธ ๋ณด์ ์ทจ์ฝ์ ํ์ง | ์ค์ ์ง์ค์ ์ ์ฐจ ๊ฐ ์ ์ ๋ถ์ ์์ง | CI ํธ๋ฆฌ๊ฑฐ ๋ฐฉ์์ ์ ์ฑ ๊ฒ์ดํ ์ ์ด์ฉํ ์ ์ฒด ๋ฐ ์ฆ๋ถ ์ค์บ | CWE์ ํธํ๋ฉ๋๋ค. ์ข ์์ฑ ๊ฒ์ฌ๋ฅผ ์ํด์๋ ์ถ๊ฐ ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค. | ๋์; ๊ท์ ์ค์ ์ค์ฌ์ ๋์๋ณด๋ ๋ฐ ์ญํ ์ ์ด | CI ์ง์ฐ ์๊ฐ ์ฆ๊ฐ, ์ธํ๋ผ ์ค๋ฒํค๋ ์ฆ๊ฐ |
| SCA๋ฅผ ๊ฐํํ์ธ์ | ๊ฐ์ฌ ์ ๋ ฌ ๊ธฐ๋ฅ์ ๊ฐ์ถ ์ํฐํ๋ผ์ด์ฆ SAST | ์ค์ ์ง์ค์ ๋ณด์ ์ผํฐ๋ฅผ ๊ฐ์ถ ์๋ฏธ ๋ชจ๋ธ๋ง ์์ง | CLI ๋ฐ ํ๋ฌ๊ทธ์ธ ๊ธฐ๋ฐ CI ํตํฉ | CWE ์ ๋ ฌ; ๋ณด์ ๋๊ตฌ๋ฅผ ํตํ CVE | ๋งค์ฐ ๋์; ๊ฐ์ฌ ์ถ์ ๋ฐ ๊ฑฐ๋ฒ๋์ค ์ํฌํ๋ก | ๋ณต์กํ ๊ตฌ์ฑ, ์๋นํ ์ด์ ๋น์ฉ |
| ์ปค๋ฒ๋ฆฌํฐ | ๊ตฌ์กฐ์ ๊ฒฐํจ ํ์ง ๋ฐ ์ ๋ขฐ์ฑ | ๋น๋ ์บก์ฒ ์๋ฏธ ๋ถ์ ํ๋ซํผ | ์ ์ง์ CI ์ค์บ ๋ฐ ์ ์ฒด CI ์ค์บ | CWE ํ์ค ์ค์; ๋ค์ดํฐ๋ธ ์ข ์์ฑ ์์, CVE ๊ด๋ฆฌ ๊ธฐ๋ฅ ์ ๊ณต | ๊ฒฐํจ ์๋ช ์ฃผ๊ธฐ ์ถ์ ์ ๋งค์ฐ ์ ์ฉํจ | ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ ํนํ ๋ณด์ ์ฌ๋ ๊ฐ์ |
| ์ ๊ทธ๋ | ํจํด ๊ธฐ๋ฐ ๋ณด์ ๋ฐ ์ ์ฑ ์ํ | ์ฌ์ฉ์ ์ ์ ๊ท์น ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ AST ํจํด ๋งค์นญ ์์ง | ๋น ๋ฅธ ํ ๋ฆฌํ์คํธ ์ค์บ, DevSecOps ํตํฉ | ๊ท์น ํฉ์ ํตํ CWE ์ ๋ ฌ; CVE ์ถ์ ๊ธฐ๋ฅ์ ๋ด์ฅ๋์ด ์์ง ์์ต๋๋ค. | ๊ท์น ๊ด๋ฆฌ ์ฑ์๋์ ๋ฐ๋ผ ์ค๊ฐ์์ ๋์ | ์ ํ์ ์ธ ์ฌ์ธต ๋ฐ์ดํฐ ํ๋ฆ ๋ชจ๋ธ๋ง |
| GitHub ๊ณ ๊ธ ๋ณด์ | ์ฝ๋ ๋ฐ ์ข ์์ฑ ๋ณด์ ํตํฉ | ๋ฆฌํฌ์งํ ๋ฆฌ ํตํฉ์ ํตํ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ CodeQL ์๋ฏธ ๋ถ์ | GitHub Actions ๊ธฐ๋ฐ ์ค์บ, ๋ธ๋์น ๋ณดํธ ๊ฐ์ ์ ์ฉ | ์ข ์์ฑ์ ๋ํ ๋ค์ดํฐ๋ธ CVE ๋งคํ | GitHub ์ค์ฌ ๊ธฐ์ ๋ด์์ ๋์ ์์น | GitHub์์ ํธ์คํ ๋๋ ์ ์ฅ์๋ก ์ ํ๋ฉ๋๋ค. |
| NowSecure | ๋ชจ๋ฐ์ผ ๋ณด์ ๊ฒ์ฆ | ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์์ค ๋ฐ ๋ฐ์ด๋๋ฆฌ ๋ถ์ ํ๋ซํผ | ๋ฆด๋ฆฌ์ค ๋จ๊ณ CI ํตํฉ | ๋ชจ๋ฐ์ผ ์ข ์์ฑ์ ๋ํ CVE ๋งคํ | ๋ชจ๋ฐ์ผ ๊ท์ ์ค์ ํ๊ฒฝ์ ์ ํฉํจ | ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ค |
ํนํ๋์ด ์์ง๋ง ์ ์๋ ค์ง์ง ์์ Swift ์ ์ ๋ถ์ ๋ฐ ํ์ง ๋๊ตฌ
์ฃผ๋ฅ ํ๋ซํผ์ด ๊ธฐ์ ํ๊ฒฝ์์ ๋ ผ์์ ์ค์ฌ์ ์ฐจ์งํ๋ ๋ฐ๋ฉด, Swift์ ํ์ง, ๋ณด์ ๋๋ ์ํคํ ์ฒ์ ๊ด๋ จ๋ ํน์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ ๋ฌธํ๋ ๋๊ตฌ๋ค๋ ์์ต๋๋ค. ์ด๋ฌํ ์๋ฃจ์ ๋ค์ ํฌ๊ด์ ์ธ ๊ฑฐ๋ฒ๋์ค ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ ์์ง๋ง, ํน์ ์๋๋ฆฌ์ค์์ ์ ์ฉํ ๊ฐ์น๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
- ์ฃผ์
Periphery๋ ์ฌ์ฉ๋์ง ์๋ ์ฝ๋, ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ์ ์ธ, ์ค๋ณต ์ฌ๋ณผ์ ํ์งํ๋๋ก ์ค๊ณ๋ Swift ๊ธฐ๋ฐ ์ ์ ๋ถ์ ๋๊ตฌ์ ๋๋ค. Periphery๋ ์ ๊ทผ ๋ถ๊ฐ๋ฅํ๊ฑฐ๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ตฌ์ฑ ์์๋ฅผ ์๋ณํ์ฌ ์ฝ๋๋ฒ ์ด์ค์ ๋น๋ํ๋ฅผ ์ค์ด๊ณ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํต๋๋ค. ์ทจ์ฝ์ ํ์ง๋ CVE ๋งคํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ง๋ง, ๊ธฐ๋ฅ ๊ฐ๋ฐ ๊ณผ์ ์์ ์์ฌ ์ํฐํฉํธ๊ฐ ๋จ๋ ๋๊ท๋ชจ Swift ํ๋ก์ ํธ์์ ํนํ ์ ์ฉํฉ๋๋ค. Periphery์ ๊ฐ์น๋ ๋ณด์ ๊ฐํ๋ณด๋ค๋ ํ๋ํ ์ค๋น ํ์ธ๋ฅผ ๊ฐ์ถ๊ณ ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ค์ด๋ ๋ฐ ์์ต๋๋ค. - ์ถ๋ก (๋ฉํ)
Infer๋ Meta์์ ๊ฐ๋ฐํ ์คํ ์์ค ์ ์ ๋ถ์ ๋๊ตฌ์ ๋๋ค. Swift๋ฅผ ์ง์ํ๋ฉฐ, ๊ธฐํธ ์คํ ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ null ์ญ์ฐธ์กฐ, ๋ฆฌ์์ค ๋์, ๋์์ฑ ๊ด๋ จ ๋ฌธ์ ํ์ง์ ์ค์ ์ ๋ก๋๋ค. Infer๋ ํฌ๊ด์ ์ธ ์ํฐํ๋ผ์ด์ฆ ๊ฑฐ๋ฒ๋์ค ํ๋ซํผ์ผ๋ก ์๋ฆฌ๋งค๊นํ์ง๋ ์์์ง๋ง, ๊ธฐ๋ณธ์ ์ธ ๋ฆฐํฐ๋ณด๋ค ์ฌ์ธต์ ์ธ ๊ฒฐํจ ๋ชจ๋ธ๋ง ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ค๋ง, ์ข ์์ฑ CVE ์ถ์ ๊ธฐ๋ฅ์ ํฌํจํ์ง ์์ผ๋ฉฐ, ๋๊ท๋ชจ ์กฐ์ง์์ CI ํ์ฅ์ ์ํด์๋ ํตํฉ ์์ ์ด ํ์ํฉ๋๋ค. - MobSF(๋ชจ๋ฐ์ผ ๋ณด์ ํ๋ ์์ํฌ)
MobSF๋ Swift ๊ธฐ๋ฐ iOS ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ค ์ฝ๋ ๋ฐ ๋ฐ์ด๋๋ฆฌ ์์ค์์ ๋ถ์ํ ์ ์๋ ์คํ ์์ค ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์ ํ ์คํธ ํ๋ ์์ํฌ์ ๋๋ค. ์ ์ ๋ฐ ๋์ ๊ฒ์ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ, ์์ ํ์ง ์์ ๊ตฌ์ฑ์ด๋ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ ๋ ธ์ถ ํจํด์ ์ฐพ์๋ผ ์ ์์ต๋๋ค. MobSF๋ ์ฐ๊ตฌ ์ค์ฌ์ ๋ณด์ ํ์ด๋ ์๊ท๋ชจ ๊ธฐ์ ์ ์ ํฉํ์ง๋ง, ์ํฐํ๋ผ์ด์ฆ๊ธ ์ค์ ์ง์ค์ ๊ด๋ฆฌ ๋์๋ณด๋ ๋ฐ ์ํฌํ๋ก ์๋ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค. - OCLint
OCLint๋ ์๋ Objective-C ๋ฐ C ๊ณ์ด ์ธ์ด๋ฅผ ์ํด ๊ฐ๋ฐ๋์์ง๋ง, Swift๋ฅผ ์ฌ์ฉํ๋ ํผํฉ ์ธ์ด ํ๋ก์ ํธ์์๋ ์ ์ฉ ๊ฐ๋ฅํ ์ ์ ๋ถ์ ๋๊ตฌ์ ๋๋ค. ์ฝ๋ ์ค๋ฉ, ๋ณต์ก๋ ์งํ, ์ ์ง๋ณด์์ฑ ์งํ์ ์ค์ ์ ๋ก๋๋ค. OCLint๋ ๋ณด์์ ์ด์ ์ ๋ง์ถ์ง ์์ผ๋ฉฐ ์ทจ์ฝ์ ๋ถ๋ฅ ์ฒด๊ณ์์ ์ฐ๊ด์ฑ์ ์ ๊ณตํ์ง ์์ต๋๋ค. OCLint์ ๊ฐ์ ์ Objective-C์ Swift๋ฅผ ํผํฉํ์ฌ ์ฌ์ฉํ๋ ํ๋ํ ํ๊ฒฝ์์ ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ธก์ ํ๋ ๋ฐ ์์ต๋๋ค. - ๋ฐ์ธ์ ์ค์ํํธ
Danger Swift๋ CI ํ์ดํ๋ผ์ธ ๋ด์์ ์ฝ๋ ๊ฒํ ์ ์ฑ ์ํ์ ์๋ํํฉ๋๋ค. ํ ์คํธ ๋๋ฝ, ๋ฌธ์ ๋ถ์กฑ ๋๋ ์ ์ฑ ์๋ฐ๊ณผ ๊ฐ์ ์ฌ์ ์ ์๋ ๊ท์น์ ๋ฐ๋ผ ํ ๋ฆฌํ์คํธ๋ฅผ ํ๊ฐํฉ๋๋ค. ์๋ฏธ๋ก ์ ์ทจ์ฝ์ ๋ถ์์ ์ํํ์ง ์์ง๋ง ์ํฌํ๋ก์ฐ ๊ด๋ฆฌ๋ฅผ ๊ฐํํฉ๋๋ค. ๊ตฌ์กฐํ๋ ์ฝ๋ ๊ฒํ ํ๋ก์ธ์ค๋ฅผ ์ค์ํ๋ ๊ธฐ์ ์์ Danger Swift๋ ์ ์ฐจ์ ํ์ง ๊ฒ์ดํธ๋ฅผ ์ํํจ์ผ๋ก์จ ์ ์ ๋ถ์์ ๋ณด์ํฉ๋๋ค. - ์ฑ์ค์(๊ฐ๋์คํ์ด)
AppSweep์ Swift ๋ฐ์ด๋๋ฆฌ์ ์ ์ ๊ฒ์ฌ ๋ฐ ํ์ฌ SDK ์ํ ๋ถ์์ ํฌํจํ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์ ๋ถ์ ์ ๋ฌธ ๊ธฐ์ ์ ๋๋ค. ํนํ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์ ํนํ๋ ์ทจ์ฝ์ ๊ณผ ๊ท์ ์ค์ ์ ์ด์ ์ค์ ์ ๋ก๋๋ค. ๋ค๊ตญ์ด SAST ์์ง๋ณด๋ค๋ ๋ฒ์๊ฐ ์ข์ง๋ง, ์ํ๋๊ฐ ๋์ iOS ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ๊ธฐ์ ์๊ฒ๋ ์ ์ฉํ ๋๊ตฌ์ ๋๋ค. - CodeClimate(Swift ์ง์)
CodeClimate๋ Swift ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ง์ํ๋ ์ ์ง๋ณด์์ฑ ๋ฐ ์ฝ๋ ํ์ง ๋ถ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ฌ์ธต์ ์ธ ์ทจ์ฝ์ ํ์ง๋ณด๋ค๋ ๊ธฐ์ ๋ถ์ฑ ์ถ์ , ๋ณต์ก์ฑ ์งํ, ํ์ง ์ถ์ธ ๋ถ์์ ์ค์ ์ ๋ก๋๋ค. CodeClimate๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ์ ๋ค์ ์ผ๋ฐ์ ์ผ๋ก ๊ท์ ์ค์์ ๊ธฐ๋ฐํ ๋ณด์ ๊ฐํ๋ณด๋ค๋ ์์ง๋์ด๋ง ์์ฐ์ฑ ์งํ๋ฅผ ์ฐ์ ์ํฉ๋๋ค. - DeepSource (Swift ๋ฒ ํ ์ง์)
DeepSource๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ๋์๋ณด๋๋ฅผ ํตํด ์๋ํ๋ ์ฝ๋ ๊ฒํ ๋ฐ ์ ์ ๋ถ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. Swift ์ง์ ๊ธฐ๋ฅ์ ์ง์์ ์ผ๋ก ๋ฐ์ ํ๊ณ ์์ผ๋ฉฐ, ๊ฐ๋ฐ์ ํผ๋๋ฐฑ ๋ฃจํ์ ํ ๋ฆฌํ์คํธ ์ฃผ์ ๊ธฐ๋ฅ์ ๊ฐ์กฐํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ๊ธ ์์ค์ SAST(์์คํ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ) ๋๋ CVE(์์ ์ ์ํ ์์) ์ข ์์ฑ ๋ชจ๋ธ๋ง์ ์ ๊ณตํ์ง ์์ง๋ง, ๊ฐํธํ ํ์ง ์๋ํ ๊ธฐ๋ฅ์ ์ฐพ๋ ์กฐ์ง์ ์ ํฉํ ์ ์์ต๋๋ค. - ShiftLeft Ocular (Swift ์ ์ฉ ๋ฒ์ ์ ํ์ )
ShiftLeft ํ๋ซํผ์ ์ฝ๋ ์์ฑ ๊ทธ๋ํ ๋ชจ๋ธ๋ง๊ณผ ๋ณด์ ๋ถ์์ ์ค์ ์ ๋ก๋๋ค. Swift ์ง์์ Java๋ JavaScript์ ๋นํด ์ ํ์ ์ผ ์ ์์ง๋ง, ๊ทธ๋ํ ๊ธฐ๋ฐ ์ทจ์ฝ์ ์ถ๋ก ์ด๋ผ๋ ๊ฐ๋ ์ ์ ๊ทผ ๋ฐฉ์์ ์ฃผ๋ชฉํ ๋งํฉ๋๋ค. ํน์ ์๋๋ฆฌ์ค์์๋ ํจํด ๊ธฐ๋ฐ ๋๊ตฌ๋ณด๋ค ๋ ์ฌ์ธต์ ์ธ ๊ตฌ์กฐ์ ๋ถ์์ ์ ๊ณตํ ์ ์์ง๋ง, ์ด์ ์ฑ์๋๋ ํ๋ซํผ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. - Swift ์ํ๊ณ์ ๋ง๊ฒ ์กฐ์ ๋ Retire.js ์คํ์ผ์ ์์กด์ฑ ์ค์บ๋
์ผ๋ถ ๊ธฐ์ ์์๋ ์คํฌ๋ฆฝํธ๋ ๊ฒฝ๋ ์ค์บ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ Swift Package Manager ์ํฐํฉํธ์ ๋ํ ๋ง์ถคํ ์ข ์์ฑ ๋ชจ๋ํฐ๋ง ํ์ดํ๋ผ์ธ์ ๊ตฌํํฉ๋๋ค. ์ด๋ฌํ ์๋ฃจ์ ์ ๊ณต๊ฐ ์ทจ์ฝ์ ํผ๋๋ฅผ ํตํด ์ทจ์ฝํ ํจํค์ง๋ฅผ ์๋ณํ์ง๋ง, ํตํฉ๋ ์ ๊ทผ์ฑ ๋ถ์์ด๋ ๊ธฐ์ ์ฉ ๋์๋ณด๋๊ฐ โโ๋ถ์กฑํฉ๋๋ค. ๋ฐ๋ผ์ ์์ ํ SCA ํ๋ซํผ์ด ์๋ ํ๊ฒฝ์์ ์์ ๋ฐฉํธ์ผ๋ก ํ์ฉ๋ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ ๋ฌธ ๋๊ตฌ๋ค์ ๋ฐ๋ ์ฝ๋ ํ์ง, ๋ชจ๋ฐ์ผ ๋ฐ์ด๋๋ฆฌ ๊ฒ์ฌ, ์ฝ๋ ๊ฒํ ์ํฌํ๋ก ๊ฐ์ ์ ์ฉ, ๋ณต์ก์ฑ ์ธก์ ๊ณผ ๊ฐ์ ํน์ ๋ฌธ์ ๋ค์ ๋ค๋ฃน๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋๊ตฌ๋ค ์ค ์ด๋ ๊ฒ๋ ๊ธฐ์ Swift ๊ฑฐ๋ฒ๋์ค์ ๊ณ์ธต์ ์๊ตฌ ์ฌํญ(์ผ๋ฐ์ ์ผ๋ก ์คํ์ผ ๊ฐ์ ์ ์ฉ, ๊ฒฐํจ ํ์ง, ์ทจ์ฝ์ ๋ชจ๋ธ๋ง, ์ข ์์ฑ ์ํ ๊ด๋ฆฌ, ๊ท์ ์ค์ ๋ณด๊ณ ํฌํจ)์ ๋จ๋ ์ผ๋ก ์ถฉ์กฑ์ํค์ง๋ ๋ชปํฉ๋๋ค. ๋๋ถ๋ถ์ ๊ท์ ๋์ ์กฐ์ง์ด๋ ๋๊ท๋ชจ ์กฐ์ง์ ๊ฒฝ์ฐ, ํน์ ๋ถ์ผ์ ํนํ๋ ๋๊ตฌ๋ค์ ๋ณด๋ค ๊ด๋ฒ์ํ ์ ์ ๋ถ์ ๋ฐ DevSecOps ์ํคํ ์ฒ ๋ด์์ ๋ณด์์ ์ธ ๊ตฌ์ฑ ์์๋ก ํ์ฉ๋ ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค.
๊ธฐ์ ์ Swift ์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ๋ฅผ ์ด๋ป๊ฒ ์ ํํด์ผ ํ ๊น์?
๊ธฐ์ ํ๊ฒฝ์์ Swift ์ ์ ๋ถ์ ์๋ฃจ์ ์ ์ ํํ ๋๋ ํ์ง ๋ฒ์๋ ๊ฐ๊ฒฉ๋ง ๊ณ ๋ คํด์๋ ์ ๋ฉ๋๋ค. ์ํคํ ์ฒ์ ๋ณต์ก์ฑ, CI ์ฑ๋ฅ ์ ์ฝ, ๊ท์ ์๋ฌด, ๊ทธ๋ฆฌ๊ณ ๊ฑฐ๋ฒ๋์ค ์ฑ์๋ ๋ฑ์ ์ข ํฉ์ ์ผ๋ก ๊ณ ๋ คํด์ผ ํฉ๋๋ค. Swift ์ํ๊ณ๋ ๋ชจ๋ฐ์ผ ํ๋ฐํธ์๋, ๊ณต์ ํ๋ ์์ํฌ, ๋ฐฑ์๋ ์๋น์ค, ๊ทธ๋ฆฌ๊ณ ๋ ๊ฑฐ์ ์์คํ ๊ณผ์ ํ์ด๋ธ๋ฆฌ๋ ํตํฉ ๋ฑ ๋ค์ํ ์์๋ฅผ ํฌ๊ดํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ฐ๋ผ์ ์ ์ ๋ถ์ ๋๊ตฌ๋ ๊ฐ๋ฐ์ ์ ์ฉ ์ ํธ๋ฆฌํฐ๊ฐ ์๋, ๊ณ์ธตํ๋ ์ํ ๊ด๋ฆฌ ๋ชจ๋ธ์ ์ผ๋ถ๋ก ํ๊ฐํด์ผ ํฉ๋๋ค.
๋ค์ ์ฐจ์๋ค์ ๊ตฌ์กฐํ๋ ๊ธฐ์ ํ๊ฐ ๋ชจ๋ธ์ ์ ์ํฉ๋๋ค.
๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ ์ ๋ฐ์ ๊ฑธ์น ๊ธฐ๋ฅ์ ๋ฒ์
Swift ํ๊ฒฝ์์์ ์ ์ ๋ถ์์ ๋ก์ปฌ ๊ฐ๋ฐ, ํ ๋ฆฌํ์คํธ ๊ฒ์ฆ, ๋ฆด๋ฆฌ์ค ํ๋ณด ๊ฐํ, ํฌํธํด๋ฆฌ์ค ์์ค ๊ฑฐ๋ฒ๋์ค ๋ฑ ์ฌ๋ฌ ๋ผ์ดํ์ฌ์ดํด ๋จ๊ณ์์ ์๋ํฉ๋๋ค. ํ์ง๋ง ๋จ์ผ ๋๊ตฌ๋ก ๋ชจ๋ ๋จ๊ณ๋ฅผ ๋์ผํ ํจ์จ๋ก ํฌ๊ดํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค. ๊ธฐ์ ์ ์ด๋ค ๋ผ์ดํ์ฌ์ดํด ์ ์ด ์ง์ ์ ๊ฐ์ ์ ์ฉ์ด ํ์ํ๊ณ ์ด๋ค ์ง์ ์ ์๋ฌธ ์์ค์ ๊ฐ์์ฑ์ด ํ์ํ์ง ์ ์ํด์ผ ํฉ๋๋ค.
SwiftLint๋ Xcode Static Analyzer์ ๊ฐ์ ๊ฐ๋ฐ์ ์ค์ฌ ๋๊ตฌ๋ ์ด๊ธฐ ํผ๋๋ฐฑ์ ์ ๊ณตํ์ง๋ง ์ค์ ์ง์ค์ ์ ์ฑ ์ถ์ ๊ธฐ๋ฅ์ด ๋ถ์กฑํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ SAST ํ๋ซํผ์ ์ฌ์ธต์ ์ธ ์ทจ์ฝ์ ๋ชจ๋ธ๋ง์ ์ ๊ณตํ์ง๋ง CI ์ง์ฐ์ ์ ๋ฐํ์ฌ ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋๊ตฌ ์ ํ ์ ์ํํธ์จ์ด ๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ์ ์ฌ๋ฌ ๋จ๊ณ์์ ๊ฐ ๋๊ตฌ๊ฐ ์ด๋ป๊ฒ ์ํธ ๋ณด์์ ์ธ์ง ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
์ฃผ์ ์ ํ ์๋ช ์ฃผ๊ธฐ ํ๊ฐ ์ง๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํด๋น ๋๊ตฌ๋ ํ ๋ฆฌํ์คํธ ๊ฒ์ดํ ์ ์ ํฉํ ๋น ๋ฅธ ์ฆ๋ถ ๋ถ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๊น?
- ๋ฆด๋ฆฌ์ค ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํ ์์ฝ๋ ์ ์ฒด ๊ฒ์ฌ๋ฅผ ์ง์ํ ์ ์์ต๋๊น?
- ์๋ก์ด ์ฝ๋ ๊ด๋ จ ๋ฐ๊ฒฌ ์ฌํญ๊ณผ ๊ธฐ์กด ๊ธฐ์ ๋ถ์ฑ๋ฅผ ๊ตฌ๋ถํ ์ ์์ต๋๊น?
- ํฅํ ํ๊ท ๋ถ์์ ๊ฐ๋ฆฌ์ง ์๊ณ ๊ธฐ์ค์ ์ต์ ๋ฅผ ์ง์ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋ชจ๋ฐ์ผ ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ๊ฐ ๋น ๋ฅธ ๊ธฐ์ ์ ๊ฒ์ฌ ๊น์ด์ ์คํ ์๊ฐ ์ฌ์ด์ ๊ท ํ์ ๋ง์ถฐ์ผ ํฉ๋๋ค. ๊ณ ์ฑ๋ฅ ์์ง์ ์ผ๊ฐ ๋น๋ ๋๋ ๋ฆด๋ฆฌ์ค ๋จ๊ณ ๊ฒ์ฆ์ ์ฌ์ฉํ๊ณ , ๊ฒฝ๋ ๊ท์น ์์ง์ ๋ชจ๋ ์ปค๋ฐ์์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํฉ๋๋ค. ์๋ช ์ฃผ๊ธฐ ๋จ๊ณ ์ ๋ฐ์ ๊ฑธ์น ์ํคํ ์ฒ ์ผ๊ด์ฑ์ ๋ณด์์ ์ ์งํ๋ฉด์ CI ํ์ดํ๋ผ์ธ์ ๊ณผ๋ถํ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
์ฐ์ ๊ณผ ๊ท์ ์ ์กฐํ
๊ธ์ต, ์๋ฃ, ์ค์ ์ธํ๋ผ์ ๊ฐ์ ๊ท์ ์ฐ์ ์์๋ ์ ์ ๋ถ์ ๋๊ตฌ๊ฐ ๊ฐ์ฌ ์ถ์ ์ฑ๊ณผ ๊ตฌ์กฐํ๋ ์ทจ์ฝ์ ๋ณด๊ณ ๋ฅผ ์ง์ํด์ผ ํฉ๋๋ค. ๋จ์ํ ์ฌ๊ฐ๋ ๋ถ๋ฅ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ๊ธฐ์ ์ CWE์ ๊ฐ์ ๊ณต์ธ๋ ๋ถ๋ฅ ์ฒด๊ณ์์ ๋งคํ ๋ฐ ๊ธฐ์ IT ์ํ ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ์์ ์ ์๋ ๊ฑฐ๋ฒ๋์ค ํ๋ ์์ํฌ์์ ์ฐ๊ณ๋ฅผ ํ์๋ก ํฉ๋๋ค.
ํ๊ฐ ์ ๋ค์ ์ฌํญ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
- ํด๋น ๋๊ตฌ๋ ์ญํ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด ๋ฐ ๊ฐ์ฌ ๋ก๊ทธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๊น?
- ์กฐ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๊ท์ ์ค์ ๋ฌธ์ ์์ฑ์ ์ํด ๋ด๋ณด๋ผ ์ ์์ต๋๊น?
- ํ ๊ฐ ๋ฌธ์ ํด๊ฒฐ ์ํฌํ๋ก๋ฅผ ์ถ์ ํ ์ ์์ต๋๊น?
- ์ฌ๊ณ ๊ด๋ฆฌ ๋ฐ ๊ฑฐ๋ฒ๋์ค ํ๋ซํผ๊ณผ ์ฐ๋๋ฉ๋๊น?
๊ณต์ฉ ์ฑ ์คํ ์ด๋ฅผ ํตํด ๋ฐฐํฌ๋๋ ๋ชจ๋ฐ์ผ ์ ์ฉ Swift ์ฑ์ ๋ชจ๋ฐ์ผ ๋ณด์ ํ์ค์ ๋ํ ๊ท์ ์ค์ ๊ฒ์ฆ์ด ํ์ํ ์ ์์ต๋๋ค. NowSecure์ ๊ฐ์ ํ๋ซํผ์ ์ด๋ฌํ ํน์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ๋ฐ๋ฉด, ๋ณด๋ค ๊ด๋ฒ์ํ SAST ์์ง์ ํ์ด๋ธ๋ฆฌ๋ ์ํคํ ์ฒ ์ ๋ฐ์ ๊ฑธ์ณ ์ธ์ด ๊ฐ ๊ฑฐ๋ฒ๋์ค๋ฅผ ์ง์ํฉ๋๋ค.
๊ท์ ์ค์๋ ๋จ์ํ ํ์ง ๋ฅ๋ ฅ์๋ง ๊ตญํ๋์ง ์์ต๋๋ค. ์ฆ๊ฑฐ ์์ฑ, ์ด๋ ฅ ์ถ์ , ๊ทธ๋ฆฌ๊ณ ์ถ์ ๊ฐ๋ฅํ ๊ฐ์ ์ฃผ๊ธฐ๊น์ง ํฌํจํฉ๋๋ค. ์ค์ ์ง์ค์ ๋ณด๊ณ ์ฒด๊ณ๊ฐ ๋ถ์กฑํ ๊ธฐ์ ์ ๊ฐ์ฌ ๊ณผ์ ์์ ํต์ ํจ๊ณผ์ฑ์ ์ ์ฆํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ ์ ์์ต๋๋ค.
ํ์ง ์งํ ๋ฐ ์ ํธ ๋ ์ก์๋น ํ๊ฐ
์ ์ ๋ถ์ ํ๋ซํผ์ ํจ๊ณผ๋ ์ ํธ์ ์ ํ๋์ ํฌ๊ฒ ์ข์ฐ๋ฉ๋๋ค. ๋์ ์คํ๋ฅ ์ ๊ฐ๋ฐ์์ ์ ๋ขฐ๋ฅผ ๋จ์ด๋จ๋ฆฌ๊ณ ๊ท์ ์ค์ ๊ธฐ๊ฐ์ ์ฝํ์ํต๋๋ค. ๋ฐ๋๋ก, ์ง๋์น๊ฒ ์ข์ ๊ท์น ์งํฉ์ ์ฌ๊ฐ์ง๋๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
ํ๊ฐ์ ์ฌ์ฉ๋๋ ํ์ง ์งํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ค์ ์ฝ๋ ๋ณต์ก์ฑ ์กฐ๊ฑด์์์ ์คํ๋ฅ
- ์ํ์ ์๊ตฌ์ ์ผ๋ก ์จ๊ธฐ์ง ์๊ณ ์กฐ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ต์ ํ ์ ์๋ ๋ฅ๋ ฅ
- ๋ด๋ถ ์ ์ฑ ์ ๋ง์ถฐ ์ฌ์ฉ์ ์ง์ ๊ท์น ์์ฑ์ ์ง์ํฉ๋๋ค.
- ์คํ์ผ์ ์ธ ๋ฌธ์ ์ ๋ณด์์ ์ค์ํ ๊ฒฐํจ์ ๊ตฌ๋ถ
์ฌ์ธต์ ์ธ ์๋ฏธ ๋ชจ๋ธ์ ๊ตฌ์ถํ๋ ๋๊ตฌ๋ ๋ณด๋ค ์ ํํ ์ทจ์ฝ์ ํ์ง๋ฅผ ์ ๊ณตํ ์ ์์ง๋ง ์ด์ ๋ณต์ก์ฑ์ ์ฆ๊ฐ์ํต๋๋ค. ํจํด ๊ธฐ๋ฐ ์์ง์ ์๋๋ฅผ ์ ๊ณตํ์ง๋ง ๊ท์น ํ์ง์ ํฌ๊ฒ ์์กดํฉ๋๋ค. ๊ธฐ์ ์ ๊ณต๊ธ์ ์ฒด ๋ฌธ์์๋ง ์์กดํ๊ธฐ๋ณด๋ค๋ ๋ํ์ ์ธ Swift ์ ์ฅ์๋ฅผ ๋์์ผ๋ก ํ๋ณด ๋๊ตฌ๋ฅผ ์๋ฒ ์ด์ํ์ฌ ์ค์ ์ ํธ ํ์ง์ ์ธก์ ํด์ผ ํฉ๋๋ค.
์ ํธ ๋ ์ก์๋น๋ ๋ฌธ์ ํด๊ฒฐ ์๋์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ฒด๊ณ์ ์ธ ๊ฑฐ๋ฒ๋์ค ๋ชจ๋ธ์ ์ ์ ์ธ ๋ฐ๊ฒฌ ์ฌํญ์ ์ฒดํฌ๋ฆฌ์คํธ ํญ๋ชฉ์ด ์๋ ์ํ ์งํ๋ก ๊ฐ์ฃผํ์ฌ ๊ธฐ์ ์ํ ๊ด๋ฆฌ ๊ดํ์์ ๋ ผ์๋๋ ๊ด๋ฒ์ํ ์ํ ๊ธฐ๋ฐ ์ฐ์ ์์ ์ง์ ์ ๊ทผ ๋ฐฉ์๊ณผ ์ผ์น์ํต๋๋ค.
์์ฐ ๋ฐ ์ด์ ํ์ฅ์ฑ
ํด ๋ผ์ด์ ์ค ๋น์ฉ์ ์ ์ฒด ์์ ๋น์ฉ์ ํ ๊ตฌ์ฑ ์์์ผ ๋ฟ์ ๋๋ค. ๊ธฐ์ ์ ์ธํ๋ผ ์๊ตฌ ์ฌํญ, CI ์ปดํจํ ์ค๋ฒํค๋, ๊ท์น ์กฐ์ ๋ ธ๋ ฅ ๋ฐ ์ง์์ ์ธ ๋ฌธ์ ํด๊ฒฐ ์ํฌํ๋ก๋ฅผ ๋ชจ๋ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
์ด์ ํ์ฅ์ฑ ๊ณ ๋ ค ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํด๋น ๋๊ตฌ๋ ์ ์ฉ ์๋ฒ ์ธํ๋ผ๊ฐ ํ์ํฉ๋๊น?
- ํด๋ผ์ฐ๋ ๋ฐฐํฌ๋ ๋ฐ์ดํฐ ์ฃผ๊ถ ์๊ฑด๊ณผ ํธํ๋ฉ๋๊น?
- ์ค์บ ์๊ฐ์ ์ ์ฅ์ ์ฆ๊ฐ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ๋ณํํฉ๋๊น?
- ๊ท์น ๊ตฌ์ฑ์ ๊ด๋ฆฌํ๋ ค๋ฉด ์ ๋ฌธ ๋ณด์ ์์ง๋์ด๊ฐ ํ์ํ๊ฐ์?
์ฌ๋ฌ ํ์ ๊ฑธ์ณ ์๋ ๋๊ท๋ชจ Swift ํฌํธํด๋ฆฌ์ค๋ ์ค์ ์ง์ค์ ๊ตฌ์ฑ ์ ์ด๋ฅผ ํ์๋ก ํฉ๋๋ค. ๊ฑฐ๋ฒ๋์ค ๊ท์จ์ด ์์ผ๋ฉด ์๋ก ๋ค๋ฅธ ๊ท์น ์ธํธ๊ฐ ๋ฐ์ํ์ฌ ์ผ๊ด์ฑ์ด ์ ํ๋๊ณ ํ ๊ฐ ๋น๊ต ๊ฐ๋ฅ์ฑ์ด ์ฝํ๋ ์ ์์ต๋๋ค.
๊ธฐ์ ์ ๋ํ ์ฝ๋ ์ถ์ ์ฑ ๋ชจ๋ธ๊ณผ ๊ฐ์ ํฌํธํด๋ฆฌ์ค ์์ค์ ๊ฐ์์ฑ ๋ฉ์ปค๋์ฆ๊ณผ์ ํตํฉ์ ํ๊ฐํ์ฌ ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ๊ณต์ ํ๋ ์์ํฌ ๋ฐ ๋ฐฑ์๋ ํตํฉ ์ ๋ฐ์ ๊ฑธ์ณ ์ด๋ป๊ฒ ์ ํ๋๋์ง ํ์ ํด์ผ ํฉ๋๋ค. ๋ณด๋ค ๊ด๋ฒ์ํ ์ํคํ ์ฒ ๊ด๋ฆฌ ํ๋ ์์ํฌ์ ํตํฉ๋์ง ์๋ ๋๊ตฌ๋ ๋จํธ์ ์ธ ์ํ ๋ถ์์ ์ด๋ํ ์ ์์ต๋๋ค.
๊ถ๊ทน์ ์ผ๋ก ์ ํ ๊ฒฐ์ ์ ์กฐ์ง์ ์ฑ์๋๋ฅผ ๋ฐ์ํด์ผ ํฉ๋๋ค. ์๊ท๋ชจ ํ์ ๋ง์ฐฐ์ด ์ ์ ํตํฉ๊ณผ ๋น ๋ฅธ ํผ๋๋ฐฑ์ ์ฐ์ ์ํ ์ ์๋ ๋ฐ๋ฉด, ๊ท์ ๋ฅผ ๋ฐ๋ ๊ธฐ์ ์ ์ค์ ์ง์ค์ ๊ฐ๋ , ๊ฐ์ฌ ๋ฌธ์ํ ๋ฐ ์ ์ฅ์ ๊ฐ ์ ์ฑ ์ํ์ ํ์๋ก ํฉ๋๋ค. ๊ฐ๋ฐ์ ์์ค์ ๊ด๋ฆฌ ๋๊ตฌ์ ์ค์ ์ง์ค์ ๋ณด์ ๊ฑฐ๋ฒ๋์ค ํ๋ซํผ์ ๊ฒฐํฉํ ๊ณ์ธตํ ์ํคํ ์ฒ๋ ๊ธฐ์ Swift ํ๊ฒฝ์ ๊ฐ์ฅ ์ง์ ๊ฐ๋ฅํ ๋ชจ๋ธ์ ์ ๊ณตํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๊ธฐ์ ๋ชฉํ๋ณ ์ฃผ์ ์ถ์ฒ ์ ํ
์ํฐํ๋ผ์ด์ฆ Swift ํ๊ฒฝ์์๋ ๋จ์ผ ์ ์ ๋ถ์ ์๋ฃจ์ ์ ์์กดํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ญ ๋๋ค. ์คํ๋ ค ๋๊ตฌ ์ ํ์ ์ฃผ์ ์ํ ์์ธ, ๊ท์ ํ๊ฒฝ, ์ ์ฅ์ ํธ์คํ ๋ชจ๋ธ ๋ฐ CI ์ฑ๋ฅ ํ์ฉ ์ค์ฐจ๋ฅผ ๋ฐ์ํฉ๋๋ค. ๋ค์ ์ ์ ํญ๋ชฉ๋ค์ ๊ธฐ๋ฅ ๋ง์ผํ ๋ณด๋ค๋ ์ํคํ ์ฒ ์ ํฉ์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ๋ถ์์ ์ผ๋ก ๋์ถ๋ ์กฐํฉ์ ๋๋ค.
๊ฐ๋ฐ์ ์์ ๋ฐ ์ฝ๋ ์ผ๊ด์ฑ ์ ์ง์ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค.
๊ฐ๋ ์ฑ, ์ผ๊ด๋ ํ์, ๊ทธ๋ฆฌ๊ณ ์ด๊ธฐ ๋จ๊ณ์ ๊ฒฐํจ ์๋ฐฉ์ ์ฐ์ ์ํ๋ ์กฐ์ง์ ์ํด:
์ถ์ฒ ์กฐํฉ:
SwiftLint + SwiftFormat + Xcode ์ ์ ๋ถ์๊ธฐ
์ด ์คํ์ ์คํ์ผ์ ํต์ผ์ฑ์ ๊ฐํํ๊ณ , ์ฌ์ํ ๊ฒฐํจ์ ์ค์ด๋ฉฐ, ๊ฐ๋ฐ์ ์ํฌํ๋ก์ ์ํํ๊ฒ ํตํฉ๋ฉ๋๋ค. CI ์ง์ฐ ์๊ฐ์ ์ต์ํํ๊ณ ์ค์ ์ง์ค์ ์ธํ๋ผ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ธต์ ์ธ ์ทจ์ฝ์ ๋ชจ๋ธ๋ง์ด๋ ์ข ์์ฑ CVE ์ถ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ด๋ถ ์ ํ๋ฆฌ์ผ์ด์ , ๊ท์ ์์ค์ด ๋ฎ์ ํ๊ฒฝ ๋๋ ๊ณ ๊ธ ๋ณด์ ์ ์ด ์๋์ ๊ธฐ๋ณธ ๊ณ์ธต์ผ๋ก ์ฌ์ฉํ๊ธฐ์ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค.
๋ณด์์ ์ต์ฐ์ ์ผ๋ก ์๊ฐํ๊ณ ๊ท์ ๋ฅผ ๋ฐ๋ ๊ธฐ์ ์ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค.
๊ณต์์ ์ธ ๊ท์ ์ค์ ์๊ฑด์ ๋ฐ๋ฅด๊ฑฐ๋ ๋ฏผ๊ฐํ ๊ณ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ธฐ์ ์ ๊ฒฝ์ฐ:
์ถ์ฒ ์กฐํฉ:
Fortify ๋๋ Checkmarx + ์ค์ ์ง์ค์ ๊ฑฐ๋ฒ๋์ค ์ํฌํ๋ก
์ด๋ฌํ ํ๋ซํผ์ ์ ์ฐจ ๊ฐ ์ทจ์ฝ์ ๋ชจ๋ธ๋ง, ๊ตฌ์กฐํ๋ CWE ๋ถ๋ฅ ๋ฐ ๊ฐ์ฌ ์ค๋น ๋ณด๊ณ ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ํ ์ญํ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด ๋ฐ ๊ฐ์ ์๋ช ์ฃผ๊ธฐ ์ถ์ ์ ์ง์ํฉ๋๋ค. ์คํ ์ค๋ฒํค๋์ ๋ผ์ด์ ์ค ๋น์ฉ์ ๋ ๋์ง๋ง, ๊ท์ ๋ ์ด์ ํ๊ฒฝ์ ๋ถํฉํ๋ ์ฌ์ธต์ ์ธ ๊ฑฐ๋ฒ๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ด ๋ฒ์ฃผ๋ ์ทจ์ฝ์ฑ ์ฆ๊ฑฐ, ์ ์ฑ ์งํ ์ถ์ ์ฑ ๋ฐ ์ด์ฌํ ๋ณด๊ณ ๊ฐ ํ์ํ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค.
GitHub ์ค์ฌ ์กฐ์ง์ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค.
ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ ๊ณต ๋ชจ๋ธ์ ์ฌ์ฉํ๋ GitHub Enterprise๋ฅผ ํ์ค์ผ๋ก ์ฌ์ฉํ๋ ๊ธฐ์ ์ ๊ฒฝ์ฐ:
๊ถ์ฅ ์๋ฃจ์
:
GitHub ๊ณ ๊ธ ๋ณด์
์ด ํ๋ซํผ์ CodeQL ๊ธฐ๋ฐ ์ ์ ๋ถ์, ์ข ์์ฑ CVE ๋ชจ๋ํฐ๋ง ๋ฐ ๋น๋ฐ ํค ํ์ง ๊ธฐ๋ฅ์ ์ ์ฅ์ ์ํฌํ๋ก์ ํตํฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ธํ๋ผ ๋ณต์ก์ฑ์ ์ค์ด๊ณ ํตํฉ๋ ํ ๋ฆฌํ์คํธ ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค. ํนํ GitHub Actions๋ฅผ ๊ธฐ๋ฐ์ผ๋ก CI ํ์ดํ๋ผ์ธ์ด ๊ตฌ์ถ๋ ๊ฒฝ์ฐ ํจ๊ณผ์ ์ ๋๋ค.
ํ์ง๋ง ๋์ฑ ์ฌ์ธต์ ์ธ ๋ง์ถคํ ์ทจ์ฝ์ ๋ชจ๋ธ๋ง์ด๋ GitHub ์ด์ธ์ ํธ์คํ ์ง์์ด ํ์ํ ๊ธฐ์ ์ ๋ณด์์ ์ธ ๋๊ตฌ๊ฐ ํ์ํ ์ ์์ต๋๋ค.
๋ชจ๋ฐ์ผ ๊ท์ ์ค์ ๋ฐ ์ฑ ์คํ ์ด ๋ณด์ ํ์ธ์ ์ต์
๊ท์ ๋์ ์์ฅ ๋๋ ๊ณ ์ํ ์์ฅ์์ iOS ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ๊ธฐ์ ์ ๊ฒฝ์ฐ:
์ถ์ฒ ์กฐํฉ:
NowSecure + ๊ธฐ๋ณธ ์ ์ ๋ถ์ ๋๊ตฌ
NowSecure๋ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์ ํนํ๋ ๋ณด์ ๊ฒ์ฆ, ๋ฐ์ด๋๋ฆฌ ๊ฒ์ฌ ๋ฐ ์ ๊ณ ํ์ค์ ๋ถํฉํ๋ ๊ท์ ์ค์ ๋ณด๊ณ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ํนํ ๋ฆด๋ฆฌ์ค ๋จ๊ณ์์ ๊ฒ์ฆ ๋๊ตฌ๋ก ํ์ฉํ ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค. ๋ชจ๋ฐ์ผ ํ๊ฒฝ์ ์ด์ ์ ๋ง์ถ๊ณ ์์ผ๋ฏ๋ก ์๋ฒ ์ธก Swift ์๋น์ค๋ฅผ ์ํ ๋ณด๋ค ๊ด๋ฒ์ํ ์ ์ ๋ถ์ ํ๋ซํผ๊ณผ ํตํฉํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋๊ธฐ์ ์ ์ํ ์ต์ ์ ๊ท ํ ์กํ ๊ณ์ธตํ ๋ชจ๋ธ
๋ชจ๋ฐ์ผ ๋ฐ ๋ฐฑ์๋ ์์คํ ์ ๋ฐ์ ๊ฑธ์ณ ์ด๊ธฐ์ข Swift ํฌํธํด๋ฆฌ์ค๋ฅผ ๊ด๋ฆฌํ๋ ๋๊ท๋ชจ ์กฐ์ง์ ๊ฒฝ์ฐ:
๊ถ์ฅ๋๋ ๊ณ์ธตํ ์ํคํ
์ฒ:
CI ์์ ๊ด๋ฆฌ๋ฅผ ์ํด SwiftLint ๋๋ Semgrep์ ์ฌ์ฉํ์ธ์.
SonarQube๋ฅผ ํ์ฉํ ์ค์ ์ง์ค์ ํ์ง ๊ด๋ฆฌ
์ฌ์ธต์ ์ธ ์ทจ์ฝ์ ๋ชจ๋ธ๋ง์ ์ํ ์ํฐํ๋ผ์ด์ฆ SAST ์์ง
CI์ ํตํฉ๋ ์์กด์ฑ ์ค์บ๋
์ด๋ฌํ ๊ณ์ธต์ ์ ๊ทผ ๋ฐฉ์์ ์ฐ๋ ค ์ฌํญ์ ๋ถ๋ฆฌํฉ๋๋ค.
- ๋น ๋ฅธ ๊ฐ๋ฐ์ ํผ๋๋ฐฑ
- ํฌํธํด๋ฆฌ์ค ์์ค์ ๊ฐ์์ฑ
- ์ฌ์ธต์ ์ธ ๋ณด์ ๊ฐํ
- ์์กด์ฑ ์ํ ๊ด๋ฆฌ
์ด๋ฌํ ์ํคํ ์ฒ๋ ์ํ ๊ธฐ๋ฐ ์ฐ์ ์์ ๋ชจ๋ธ๊ณผ ์ผ์นํ๋ฉฐ, ์์ถฉ๋๋ ๋ชฉํ๋ก ์ธํด ๋จ์ผ ๋๊ตฌ์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆฌ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
Swift์์์ ์ ์ ๋ถ์์ ๋จ์ผ ๋๊ตฌ์ ์์กดํ๋ ๊ฒ์ด ์๋๋ผ ๊ณ์ธตํ๋ ๊ด๋ฆฌ ์ฒด๊ณ๋ฅผ ํ์๋ก ํฉ๋๋ค.
์ํฐํ๋ผ์ด์ฆ Swift ์ฝ๋๋ฒ ์ด์ค๋ ๋ชจ๋ฐ์ผ ์ธํฐํ์ด์ค, ๋ถ์ฐ ์๋น์ค ๋ฐ ๋ ๊ฑฐ์ ์์คํ ํตํฉ์ ์์ฐ๋ฅด๋ ๋ณต์กํ ๋ฐฐํฌ ํ๊ฒฝ ๋ด์์ ์ด์๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ ์ ์ฝ๋ ๋ถ์์ ๋ ๋ฆฝ์ ์ธ ๊ท์ ์ค์ ๋๊ตฌ๊ฐ ์๋๋ผ ๊ณ์ธตํ๋ ๊ฑฐ๋ฒ๋์ค ์ํคํ ์ฒ์ ์ผ๋ถ๋ก ์๋ฆฌ๋งค๊นํด์ผ ํฉ๋๋ค.
๊ฒฝ๋ ๋๊ตฌ๋ ๊ฐ๋ฐ์ ๊ท์จ์ ๊ฐํํ๊ณ ์คํ์ผ์ ๋ฌด์ง์๋ฅผ ์ค์ ๋๋ค. ์ค์ ์ง์ค์ ํ๋ซํผ์ ์ ์ฅ์ ๊ฐ ๊ฐ์์ฑ์ ์ ๊ณตํ๊ณ ํ์ง ๊ฒ์ฆ์ ๊ฐํํฉ๋๋ค. ์ฌ์ธต์ ์ธ SAST ์์ง์ ์คํ ๊ฒฝ๋ก ์ ๋ฐ์ ๊ฑธ์น ์ทจ์ฝ์ ์ ํ๋ฅผ ๋ชจ๋ธ๋งํฉ๋๋ค. ์ข ์์ฑ ์ค์บ๋๋ ์ธ๋ถ ํจํค์ง ๋ฐ ๊ณต๊ฐ๋ CVE์ ๊ด๋ จ๋ ์ ์ด์ ์ํ์ ๋๋ฌ๋ ๋๋ค. ๊ฐ ๊ณ์ธต์ ์๋ก ๋ค๋ฅธ ์ํ ์์๋ฅผ ๋ค๋ฃน๋๋ค.
๋จ์ผ ์ ์ ๋ถ์ ์๋ฃจ์ ์ ์์กดํ๋ฉด ๊ตฌ์กฐ์ ์ฌ๊ฐ์ง๋๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ฐ๋ฐ์ ์ค์ฌ ๋๊ตฌ๋ ๊ฑฐ๋ฒ๋์ค ์ถ์ ์ฑ์ด ๋ถ์กฑํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ SAST ์์ง์ ๋ชจ๋ ์ปค๋ฐ์ ์ ํฉํ์ง ์์ ์ด์ ์ค๋ฒํค๋๋ฅผ ๋ฐ์์ํฌ ์ ์์ต๋๋ค. ํ๋ซํผ ํตํฉ ์๋ฃจ์ ์ ํธ์คํ ์ํ๊ณ์ ๋ฐ๋ผ ์ํคํ ์ฒ ์ ์ฐ์ฑ์ ์ ํํฉ๋๋ค. ํจ๊ณผ์ ์ธ Swift ๊ฑฐ๋ฒ๋์ค๋ฅผ ์ํด์๋ ์กฐ์ง์ ์ฑ์๋ ๋ฐ ๊ท์ ํ๊ฒฝ์ ๋ง์ถฐ ์ ์ ํ ์กฐํฉ๋ ์๋ฃจ์ ๋ค์ด ํ์ํฉ๋๋ค.
Swift๊ฐ ๋ฏธ์ ํฌ๋ฆฌํฐ์ปฌ ๋ฐ ๊ท์ ์์ญ์ผ๋ก ์ง์์ ์ผ๋ก ํ์ฅ๋จ์ ๋ฐ๋ผ ๊ธฐ์ ์ ๋ฆฐํ ๋ฐ ์คํ์ผ ๊ฐ์ ์ ์ฉ์ ๋์ด ์ ์ ๋ถ์ ๋ฐฉ์์ ๋ฐ์ ์์ผ์ผ ํฉ๋๋ค. ์ปจํ ์คํธ ๊ธฐ๋ฐ ์ฐ์ ์์ ์ง์ , ์ข ์์ฑ ๊ฐ์์ฑ ํ๋ณด, CI(์ง์์ ํตํฉ) ๊ธฐ๋ฐ ๊ฐ์ ์ ์ฉ์ ์ง์ ๊ฐ๋ฅํ ๊ฑฐ๋ฒ๋์ค ๋ชจ๋ธ์ ์ ์ํฉ๋๋ค. ๋๊ตฌ ํตํฉ์ด ์๋ ๊ณ์ธตํ ์ํคํ ์ฒ๊ฐ ํ๋ ฅ์ ์ธ ํ์ง ๋ฐ ๋ณด์ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค.
