์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[12์›” 22์ผ] ๋ชจ๋ฐ”์ผ ์ทจ์•ฝ์  ๊ณต๊ฒฉํ•˜๊ธฐ

ljm 2025. 12. 22. 15:01

1. OWASP ๋ถ„๋ฅ˜

๐Ÿ“Œ OWASP Mobile Top 10 (2025)

  • ๋ถ„๋ฅ˜ ๋ฒˆํ˜ธ: M7
  • ์ทจ์•ฝ์  ๋ช…์นญ: Insufficient Binary Protections
  • ํ•œ๊ธ€ ๋ช…์นญ: ๋ถ€์ ์ ˆํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ณดํ˜ธ

๐Ÿ”Ž ๋ถ„๋ฅ˜ ์„ค๋ช…

Insufficient Binary Protections๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ”์ด๋„ˆ๋ฆฌ์—
๋‚œ๋…ํ™”, ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ, ๋””๋ฒ„๊น… ๋ฐฉ์ง€, ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง ๋ฐฉ์ง€ ๊ธฐ๋ฒ•์ด
์ ์šฉ๋˜์ง€ ์•Š์•„ ๊ณต๊ฒฉ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ ๋ฐ ๋กœ์ง์„
์‰ฝ๊ฒŒ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์ ์„ ์˜๋ฏธํ•œ๋‹ค.


2. ์ทจ์•ฝ์  ์›์ธ (Root Cause)

๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ M7 ์ทจ์•ฝ์ ์ด ๋ฐœ์ƒํ•œ ์›์ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ”์ด๋„ˆ๋ฆฌ์— ์ฝ”๋“œ ๋‚œ๋…ํ™”(ProGuard/R8) ๋ฏธ์ ์šฉ
  • ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ, ๋ฃจํŒ…/๋””๋ฒ„๊น… ํƒ์ง€ ๋“ฑ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ณดํ˜ธ ๊ธฐ๋ฒ• ๋ถ€์žฌ
  • React Native ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž„์—๋„
    JavaScript ์‹คํ–‰ ๊ตฌ์กฐ ๋ฐ ์ดˆ๊ธฐํ™” ๋กœ์ง์ด ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์— ๊ทธ๋Œ€๋กœ ํฌํ•จ
  • JavaScript ๋ฒˆ๋“ค์˜ ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ๊ฐ€ ํ‰๋ฌธ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ๋…ธ์ถœ
  • BuildConfig, ReactBuildConfig ๋“ฑ ๋นŒ๋“œ ๋ฐ ์‹คํ–‰ ํ™˜๊ฒฝ ์ •๋ณด๊ฐ€ ๋ณดํ˜ธ ์—†์ด ๋…ธ์ถœ

์ด๋กœ ์ธํ•ด ๊ณต๊ฒฉ์ž๋Š” ๋ณ„๋„์˜ ์šฐํšŒ ๊ณผ์ • ์—†์ด
์ •์  ๋ถ„์„ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ๋ณต์›ํ•  ์ˆ˜ ์žˆ๋‹ค.


3. ์ทจ์•ฝ์  ์„ค๋ช… (Description)

ํ•ด๋‹น APK ํŒŒ์ผ์„ ๋””์ปดํŒŒ์ผํ•œ ๊ฒฐ๊ณผ,
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ณ„๋„์˜ ๋ณดํ˜ธ ๊ธฐ๋ฒ• ์—†์ด ์ •์  ๋ถ„์„ ๋„๊ตฌ(jadx ๋“ฑ)๋ฅผ ํ†ตํ•ด
์ „์ฒด ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ๋ฐ ๋‚ด๋ถ€ ํด๋ž˜์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋ณต์›๋˜์—ˆ๋‹ค.

MainApplication ํด๋ž˜์Šค ๋ถ„์„ ๊ฒฐ๊ณผ,
๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ React Native ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Œ์„ ํ™•์ธํ•˜์˜€์œผ๋ฉฐ,
ReactHost ์ดˆ๊ธฐํ™” ๋กœ์ง์ด ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์— ํฌํ•จ๋˜์–ด ์žˆ์–ด
JavaScript ์‹คํ–‰ ๊ตฌ์กฐ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ดˆ๊ธฐํ™” ํ๋ฆ„์ด ๋ช…ํ™•ํžˆ ๋…ธ์ถœ๋˜์–ด ์žˆ์—ˆ๋‹ค.

 

๋˜ํ•œ JavaScript ๋ฒˆ๋“ค์˜ ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ(index.android.bundle)๊ฐ€
ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์— ํ‰๋ฌธ์œผ๋กœ ํฌํ•จ๋˜์–ด ์žˆ์–ด,
๊ณต๊ฒฉ์ž๋Š” ํ•ด๋‹น ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ JavaScript ๋ฒˆ๋“ค์„ ์ถ”์ถœ·๋ถ„์„ํ•˜์—ฌ
๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋ฐ ์„œ๋ฒ„ ํ†ต์‹  ํ๋ฆ„์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์ •์  ๋ถ„์„ ๊ฒฐ๊ณผ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ release ๋นŒ๋“œ๋กœ ๋ฐฐํฌ๋˜์—ˆ์œผ๋‚˜
BuildConfig ํด๋ž˜์Šค๊ฐ€ ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ๋˜์–ด ๋นŒ๋“œ ํƒ€์ž…, ๋””๋ฒ„๊ทธ ์—ฌ๋ถ€,
React Native ์‹คํ–‰ ํ™˜๊ฒฝ(Hermes, New Architecture ๋“ฑ)์ด
๊ณต๊ฒฉ์ž์—๊ฒŒ ๋ช…ํ™•ํžˆ ์‹๋ณ„๋˜์—ˆ๋‹ค.

์ด๋Š” ์šด์˜ ํ™˜๊ฒฝ์ž„์—๋„ ๋‚ด๋ถ€ ์‹คํ–‰ ์ •๋ณด๊ฐ€ ๋ณดํ˜ธ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋…ธ์ถœ๋œ ๊ฒƒ์œผ๋กœ,
Reverse Engineering ๊ณต๊ฒฉ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋Š” ์ทจ์•ฝํ•œ ๊ตฌ์„ฑ์ด๋‹ค.

 

์ •์  ๋ถ„์„ ๊ณผ์ •์—์„œ React Native JavaScript ๋ฒˆ๋“ค ๋‚ด๋ถ€์—
๋‹ค์ˆ˜์˜ ๋””๋ฒ„๊ทธ ๋ฉ”์‹œ์ง€ ๋ฐ ๋‚ด๋ถ€ ์—๋Ÿฌ ๋ฌธ์ž์—ด์ด ํ‰๋ฌธ์œผ๋กœ ํฌํ•จ๋˜์–ด ์žˆ์Œ์„ ํ™•์ธํ•˜์˜€๋‹ค.
๋˜ํ•œ API ํ˜ธ์ถœ๋กœ ์ถ”์ •๋˜๋Š” ๋‚ด๋ถ€ ์„œ๋ฒ„ ์ฃผ์†Œ(http://192.168.16.50/api)๊ฐ€
ํด๋ผ์ด์–ธํŠธ ๋ฒˆ๋“ค์— ํ•˜๋“œ์ฝ”๋”ฉ๋˜์–ด ๋…ธ์ถœ๋œ ๊ฒƒ์„ ํ™•์ธํ•˜์˜€๋‹ค.

์ด๋Š” JavaScript ๋ฒˆ๋“ค์— ๋Œ€ํ•œ ๋‚œ๋…ํ™” ๋˜๋Š” ๋ณดํ˜ธ ์กฐ์น˜๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์•˜์Œ์„ ์˜๋ฏธํ•˜๋ฉฐ,
๊ณต๊ฒฉ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‚ด๋ถ€ ํ†ต์‹  ๊ตฌ์กฐ ๋ฐ ์„œ๋ฒ„ ํ™˜๊ฒฝ์„ ์ถ”๋ก ํ•˜๋Š” ๋ฐ
ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์†์‰ฝ๊ฒŒ ํš๋“ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค.
์ด๋Ÿฌํ•œ ์ •๋ณด ๋…ธ์ถœ์€ Reverse Engineering ๊ณต๊ฒฉ์˜ ์ง„์ž… ์žฅ๋ฒฝ์„ ๋‚ฎ์ถ”๋Š” ์š”์†Œ๋กœ ์ž‘์šฉํ•œ๋‹ค.

 

 


4. ๋ณด์•ˆ ์˜ํ–ฅ (Security Impact)

๋ณธ ์ทจ์•ฝ์ ์ด ์•…์šฉ๋  ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณด์•ˆ ์œ„ํ˜‘์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€ ๋กœ์ง ๋ฐ ๊ตฌ์กฐ ๋ถ„์„์„ ํ†ตํ•œ
    ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ดํ•ด ๋ฐ ์šฐํšŒ ๊ฐ€๋Šฅ์„ฑ ์ฆ๊ฐ€
  • ์„œ๋ฒ„ API ํ˜ธ์ถœ ํ๋ฆ„, ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ตฌ์กฐ ์‹๋ณ„๋กœ ์ธํ•œ
    ์ถ”๊ฐ€์ ์ธ ์„œ๋ฒ„ ์ธก ๊ณต๊ฒฉ(M3, M6 ๋“ฑ) ๊ฐ€๋Šฅ์„ฑ ์ฆ๊ฐ€
  • ์ธ์ฆ, ์˜ˆ์•ฝ, ์‚ฌ์šฉ์ž ์ฒ˜๋ฆฌ ๋กœ์ง ๋ถ„์„์„ ํ†ตํ•œ
    ๊ถŒํ•œ ์šฐํšŒ ๋ฐ ๋น„์ •์ƒ ์š”์ฒญ ์‹œ๋„ ๊ฐ€๋Šฅ
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณ€์กฐ ๋ฐ ์•…์„ฑ ์ฝ”๋“œ ์‚ฝ์ž… ๋“ฑ
    2์ฐจ ๊ณต๊ฒฉ(M8: Code Tampering)์œผ๋กœ์˜ ํ™•์žฅ ๊ฐ€๋Šฅ์„ฑ

์ฆ‰, ๋ณธ ์ทจ์•ฝ์ ์€ ๋‹จ๋…์œผ๋กœ๋„ ์œ„ํ—˜ํ•˜์ง€๋งŒ
๋‹ค๋ฅธ ๋ชจ๋ฐ”์ผ ์ทจ์•ฝ์ ์œผ๋กœ ํ™•์žฅ๋˜๋Š” ๊ณต๊ฒฉ์˜ ์ถœ๋ฐœ์ ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.


5. ๋Œ€์‘ ๋ฐฉ์•ˆ (Mitigation)

๋ณธ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ๋Œ€์‘ ๋ฐฉ์•ˆ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๐Ÿ” 1) ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ณดํ˜ธ ๊ฐ•ํ™”

  • ProGuard ๋˜๋Š” R8์„ ํ™œ์šฉํ•œ ์ฝ”๋“œ ๋‚œ๋…ํ™” ์ ์šฉ
  • ํด๋ž˜์Šค๋ช…, ๋ฉ”์„œ๋“œ๋ช…, ๋ฌธ์ž์—ด ์ƒ์ˆ˜ ๋ณดํ˜ธ

๐Ÿ” 2) ๋ฌด๊ฒฐ์„ฑ ๋ฐ ์œ„๋ณ€์กฐ ๋ฐฉ์ง€

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ ๋กœ์ง ์ ์šฉ
  • APK ๋ณ€์กฐ ์—ฌ๋ถ€ ํƒ์ง€ ๊ธฐ๋Šฅ ๊ตฌํ˜„

๐Ÿ” 3) ๋””๋ฒ„๊น… ๋ฐ ๋ถ„์„ ๋ฐฉ์ง€

  • ๋””๋ฒ„๊น… ํƒ์ง€ ๋ฐ ์ฐจ๋‹จ ๋กœ์ง ์ ์šฉ
  • ๋ฃจํŒ…/์—๋ฎฌ๋ ˆ์ดํ„ฐ ํ™˜๊ฒฝ ํƒ์ง€ ๊ธฐ๋Šฅ ์ ์šฉ

๐Ÿ” 4) React Native ๋ณด์•ˆ ๊ฐ•ํ™”

  • JavaScript ๋ฒˆ๋“ค ๋ณดํ˜ธ(์•”ํ˜ธํ™”, ์„œ๋ฒ„ ์ „๋‹ฌ ๋ฐฉ์‹ ๊ณ ๋ ค)
  • ์‹คํ–‰ ํ™˜๊ฒฝ ์ •๋ณด(BuildConfig ๋“ฑ) ๋…ธ์ถœ ์ตœ์†Œํ™”
  • ๋””๋ฒ„๊ทธ ๊ด€๋ จ ์„ค์ •์˜ ์šด์˜ ํ™˜๊ฒฝ ์ œ๊ฑฐ

๐Ÿ” 5) ๋ณด์•ˆ ๋นŒ๋“œ ์ •์ฑ… ์ˆ˜๋ฆฝ

  • ์šด์˜ ๋นŒ๋“œ ์‹œ ๋ณด์•ˆ ์„ค์ • ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค ์ ์šฉ
  • ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜์˜ํ•œ ๋ฐฐํฌ ์ ˆ์ฐจ ๊ฐ•ํ™”