Cordova Apps

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ

์ž์„ธํ•œ ๋‚ด์šฉ์€ https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ๋‹ค์Œ์€ ์š”์•ฝ์ž…๋‹ˆ๋‹ค:

Apache Cordova๋Š” JavaScript, HTML, CSS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. Android ๋ฐ iOS ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. React Native์™€ ๋‹ฌ๋ฆฌ Cordova๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ฝ”๋“œ ๋ณ€์กฐ ์ทจ์•ฝ์ ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Cordova๋Š” WebView๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ Œ๋”๋งํ•˜๋ฉฐ, APK ๋˜๋Š” IPA ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ๋œ ํ›„์—๋„ HTML ๋ฐ JavaScript ์ฝ”๋“œ๋ฅผ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด React Native๋Š” JavaScript ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด JavaScript VM์„ ์‚ฌ์šฉํ•˜์—ฌ ๋” ๋‚˜์€ ์†Œ์Šค ์ฝ”๋“œ ๋ณดํ˜ธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Cordova ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณต์ œ

Cordova ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณต์ œํ•˜๊ธฐ ์ „์— NodeJS์™€ Android SDK, Java JDK, Gradle๊ณผ ๊ฐ™์€ ๊ธฐํƒ€ ํ•„์ˆ˜ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ๊ณต์‹ Cordova ๋ฌธ์„œ๋Š” ์ด๋Ÿฌํ•œ ์„ค์น˜์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

com.android.bank ํŒจํ‚ค์ง€ ์ด๋ฆ„์„ ๊ฐ€์ง„ Bank.apk๋ผ๋Š” ์˜ˆ์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ณ ๋ คํ•ด ๋ณด์„ธ์š”. ์†Œ์Šค ์ฝ”๋“œ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด bank.apk๋ฅผ ์••์ถ• ํ•ด์ œํ•˜๊ณ  bank/assets/www ํด๋”๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ํด๋”์—๋Š” HTML ๋ฐ JS ํŒŒ์ผ์„ ํฌํ•จํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ „์ฒด ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์„ฑ์€ bank/res/xml/config.xml์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณต์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”:

npm install -g cordova@latest
cordova create bank-new com.android.bank Bank
cd bank-new

bank/assets/www์˜ ๋‚ด์šฉ์„ bank-new/www๋กœ ๋ณต์‚ฌํ•˜๋˜, cordova_plugins.js, cordova.js, cordova-js-src/ ๋ฐ plugins/ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ Cordova ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ”Œ๋žซํผ(Android ๋˜๋Š” iOS)์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. Android ์•ฑ์„ ๋ณต์ œํ•  ๊ฒฝ์šฐ Android ํ”Œ๋žซํผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. Cordova์˜ ํ”Œ๋žซํผ ๋ฒ„์ „๊ณผ Android API ์ˆ˜์ค€์€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ํ”Œ๋žซํผ ๋ฒ„์ „ ๋ฐ ์ง€์›๋˜๋Š” Android API์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cordova documentation์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ ์ ˆํ•œ Cordova Android ํ”Œ๋žซํผ ๋ฒ„์ „์„ ํ™•์ธํ•˜๋ ค๋ฉด ์›๋ž˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ cordova.js ํŒŒ์ผ์—์„œ PLATFORM_VERSION_BUILD_LABEL์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

ํ”Œ๋žซํผ ์„ค์ • ํ›„, ํ•„์š”ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์›๋ž˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ bank/assets/www/cordova_plugins.js ํŒŒ์ผ์—๋Š” ๋ชจ๋“  ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ๊ทธ ๋ฒ„์ „์ด ๋‚˜์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค:

cd bank-new
cordova plugin add cordova-plugin-dialogs@2.0.1

ํ”Œ๋Ÿฌ๊ทธ์ธ์ด npm์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ, GitHub์—์„œ ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

cd bank-new
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git

๋ชจ๋“  ํ•„์ˆ˜ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ ํ›„ ์ปดํŒŒ์ผํ•˜์‹ญ์‹œ์˜ค:

cd bank-new
cordova requirements

APK๋ฅผ ๋นŒ๋“œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”:

cd bank-new
cordova build android โ€” packageType=apk

์ด ๋ช…๋ น์€ ๋””๋ฒ„๊ทธ ์˜ต์…˜์ด ํ™œ์„ฑํ™”๋œ APK๋ฅผ ์ƒ์„ฑํ•˜์—ฌ Google Chrome์„ ํ†ตํ•œ ๋””๋ฒ„๊น…์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ฝ”๋“œ ๋ณ€์กฐ ํƒ์ง€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ ์„ค์น˜ ์ „์— APK์— ์„œ๋ช…ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ž๋™ํ™” ๋„๊ตฌ

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


๋ณด์•ˆ ์œ„ํ—˜ ๋ฐ ์ตœ๊ทผ ์ทจ์•ฝ์  (2023-2025)

Cordova์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ณต๊ฒฉ ํ‘œ๋ฉด์ด ์„œ๋“œํŒŒํ‹ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ WebView ๋ธŒ๋ฆฌ์ง€ ๋‚ด๋ถ€์— ์กด์žฌํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ ์ ๊ทน์ ์œผ๋กœ ์•…์šฉ๋˜๊ฑฐ๋‚˜ ๊ณต๊ฐœ๋œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์•…์„ฑ NPM ํŒจํ‚ค์ง€. 2024๋…„ 7์›”, ํŒจํ‚ค์ง€ cordova-plugin-acuant๊ฐ€ ์„ค์น˜ ์ค‘ ์•…์„ฑ ์ฝ”๋“œ๋ฅผ ๋“œ๋กญํ•˜๋Š” ๊ฒƒ์ด ๋ฐœ๊ฒฌ๋˜์–ด NPM ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค (OSV-ID MAL-2024-7845). npm install cordova-plugin-acuant๋ฅผ ์‹คํ–‰ํ•œ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž ๋จธ์‹ ์€ ์†์ƒ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ƒ์น˜ ๋ชปํ•œ Cordova ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์œ„ํ•ด package.json/package-lock.json์„ ๊ฐ์‚ฌํ•˜๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„์ „์„ ๊ณ ์ •ํ•˜์‹ญ์‹œ์˜ค. OSV advisory
  • ๊ฒ€์ฆ๋˜์ง€ ์•Š์€ ๋”ฅ๋งํฌ โ†’ XSS/RCE. CleverTap Cordova Plugin โ‰ค 2.6.2 (CVE-2023-2507)๋Š” ๋”ฅ๋งํฌ ์ž…๋ ฅ์„ ์ •ํ™”ํ•˜์ง€ ์•Š์•„ ๊ณต๊ฒฉ์ž๊ฐ€ ์กฐ์ž‘๋œ ๋งํฌ๊ฐ€ ์—ด๋ฆด ๋•Œ ๋ฉ”์ธ WebView ์ปจํ…์ŠคํŠธ์—์„œ ์‹คํ–‰๋˜๋Š” ์ž„์˜์˜ JavaScript๋ฅผ ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ‰ฅ 2.6.3์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ๋Ÿฐํƒ€์ž„์— ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” URI ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค. CVE-2023-2507
  • ๊ตฌ์‹ ํ”Œ๋žซํผ ์ฝ”๋“œ. cordova-android โ‰ค 12๋Š” targetSdk 33 ์ดํ•˜๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. 2024๋…„ 5์›”๋ถ€ํ„ฐ Google Play๋Š” API 34๋ฅผ ์š”๊ตฌํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ WebView ๊ฐ•ํ™” ๊ธฐ๋Šฅ(์˜ˆ: ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ์ž๋™ ์ƒ์„ฑ๋œ exported="false")์€ API 34+์—์„œ๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. cordova-android@13.0.0 ์ด์ƒ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์‹ญ์‹œ์˜ค.

ํŽœํ…Œ์ŠคํŠธ ์ค‘ ๋น ๋ฅธ ์ ๊ฒ€

  1. ๋””์ปดํŒŒ์ผ๋œ AndroidManifest.xml์—์„œ android:debuggable="true"๋ฅผ ์ฐพ์œผ์‹ญ์‹œ์˜ค. ๋””๋ฒ„๊ทธ ๋นŒ๋“œ๋Š” chrome://inspect๋ฅผ ํ†ตํ•ด WebView๋ฅผ ๋…ธ์ถœ์‹œ์ผœ ์ „์ฒด JS ์ฃผ์ž…์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  2. config.xml์—์„œ ์ง€๋‚˜์น˜๊ฒŒ ํ—ˆ์šฉ์ ์ธ <access origin="*"> ํƒœ๊ทธ๋‚˜ www/index.html์˜ ๋ˆ„๋ฝ๋œ CSP ๋ฉ”ํƒ€ ํƒœ๊ทธ๋ฅผ ๊ฒ€ํ† ํ•˜์‹ญ์‹œ์˜ค.
  3. www/์—์„œ eval(, new Function( ๋˜๋Š” CSP ์šฐํšŒ๋ฅผ XSS๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ HTML์„ grepํ•˜์‹ญ์‹œ์˜ค.
  4. plugins/์—์„œ ๋‚ด์žฅ๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‹๋ณ„ํ•˜๊ณ  npm audit --production ๋˜๋Š” osv-scanner --lockfile์„ ์‹คํ–‰ํ•˜์—ฌ ์•Œ๋ ค์ง„ CVE๋ฅผ ์ฐพ์œผ์‹ญ์‹œ์˜ค.

๋™์  ๋ถ„์„ ํŒ

์›๊ฒฉ WebView ๋””๋ฒ„๊น…

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋””๋ฒ„๊ทธ ๋ชจ๋“œ๋กœ ์ปดํŒŒ์ผ๋˜์—ˆ๊ฑฐ๋‚˜ WebView.setWebContentsDebuggingEnabled(true)๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ, Chrome DevTools์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

adb forward tcp:9222 localabstract:chrome_devtools_remote
google-chrome --new-window "chrome://inspect/#devices"

์ด๊ฒƒ์€ ๋ผ์ด๋ธŒ JavaScript ์ฝ˜์†”, DOM ๊ฒ€์‚ฌ๊ธฐ ๋ฐ ๋Ÿฐํƒ€์ž„์— JavaScript ํ•จ์ˆ˜๋ฅผ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก ๋กœ์ง์„ ์šฐํšŒํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. (์ž์„ธํ•œ ๋‚ด์šฉ์€ Google์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.)

Frida๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JS โ‡„ Native ๋ธŒ๋ฆฌ์ง€๋ฅผ ํ›…ํ‚นํ•˜๊ธฐ

๋Œ€๋ถ€๋ถ„์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ Java ์ธก ์ง„์ž…์ ์€ org.apache.cordova.CordovaPlugin.execute(...)์ž…๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ›…ํ‚นํ•˜๋ฉด JavaScript์—์„œ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

// frida -U -f com.vulnerable.bank -l hook.js --no-pause
Java.perform(function () {
var CordovaPlugin = Java.use('org.apache.cordova.CordovaPlugin');
CordovaPlugin.execute.overload('java.lang.String','org.json.JSONArray','org.apache.cordova.CallbackContext').implementation = function(act, args, ctx) {
console.log('[Cordova] ' + act + ' => ' + args);
// Tamper the first argument of a sensitive action
if (act === 'encrypt') {
args.put(0, '1234');
}
return this.execute(act, args, ctx);
};
});

๋ณด์•ˆ ๊ฐ•ํ™” ๊ถŒ์žฅ ์‚ฌํ•ญ (2025)

  • ์ตœ์‹  ํ”Œ๋žซํผ์œผ๋กœ ์—…๋ฐ์ดํŠธ: cordova-android@13 (2024๋…„ 5์›”)์€ API 34๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ฉฐ ์ƒˆ๋กœ์šด WebView ์™„ํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋””๋ฒ„๊ทธ ์•„ํ‹ฐํŒฉํŠธ ์ œ๊ฑฐ: android:debuggable="false"๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ฆด๋ฆฌ์Šค ๋นŒ๋“œ์—์„œ setWebContentsDebuggingEnabled ํ˜ธ์ถœ์„ ํ”ผํ•˜์‹ญ์‹œ์˜ค.
  • ์—„๊ฒฉํ•œ CSP ๋ฐ ํ—ˆ์šฉ ๋ชฉ๋ก ์‹œํ–‰: ๋ชจ๋“  HTML ํŒŒ์ผ์— <meta http-equiv="Content-Security-Policy" ...> ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  config.xml์—์„œ <access> ์ถœ์ฒ˜๋ฅผ ์ œํ•œํ•˜์‹ญ์‹œ์˜ค. ์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ์ตœ์†Œ CSP ์˜ˆ์‹œ:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'">
  • ๋ช…ํ™•ํ•œ ํ…์ŠคํŠธ ํŠธ๋ž˜ํ”ฝ ๋น„ํ™œ์„ฑํ™”: AndroidManifest.xml์—์„œ android:usesCleartextTraffic="false"๋ฅผ ์„ค์ •ํ•˜๊ณ /ํ•˜๊ฑฐ๋‚˜ TLS๋ฅผ ์‹œํ–‰ํ•˜๋Š” [network-security-config]๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ํ”Œ๋Ÿฌ๊ทธ์ธ ์œ„์ƒ:
  • npm ci๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฒ„์ „์„ ๊ณ ์ •ํ•˜๊ณ  ์ƒ์„ฑ๋œ package-lock.json์„ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฃผ๊ธฐ์ ์œผ๋กœ npm audit, osv-scanner ๋˜๋Š” cordova-check-plugins๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‚œ๋…ํ™”: Terser/UglifyJS๋กœ JavaScript๋ฅผ ์ถ•์†Œํ•˜๊ณ  ์ƒ์‚ฐ ๋นŒ๋“œ์—์„œ ์†Œ์Šค ๋งต์„ ์ œ๊ฑฐํ•˜์—ฌ ์ผ๋ฐ˜์ ์ธ ๋ฆฌ๋ฒ„์‹ฑ ์†๋„๋ฅผ ๋Šฆ์ถฅ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ๋ฌธํ—Œ

  • Apache Cordova โ€“ Cordova-Android 13.0.0 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ (2024๋…„ 5์›”)
  • OSV-ID MAL-2024-7845 โ€“ cordova-plugin-acuant์˜ ์•…์„ฑ ์ฝ”๋“œ
  • CVE-2023-2507 โ€“ CleverTap Cordova Plugin ๋”ฅ๋งํฌ XSS

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ