Skip to content

Conversation

@eunsol1530
Copy link

πŸ” Security Patch Summary

πŸ—‚οΈ 1. cordova.js

πŸ”Ž SAST Analysis Summary

1-1. [Vulnerability] incorrect-suffix-check

  • #️⃣ Line: 1235
  • πŸ›‘οΈ Severity: ERROR
  • πŸ”– CWE-020
  • ✍️ Message: This suffix check is missing a length comparison to correctly handle indexOf returning -1.

1-2. [Vulnerability] incorrect-suffix-check

  • #️⃣ Line: 1235
  • πŸ›‘οΈ Severity: ERROR
  • πŸ”– CWE-020
  • ✍️ Message: This suffix check is missing a length comparison to correctly handle indexOf returning -1.

1-3. [Vulnerability] prototype-pollution-utility

  • #️⃣ Line: 453
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-078, CWE-079, CWE-094, CWE-400, CWE-471, CWE-915
  • ✍️ Message: Properties are copied from src to obj without guarding against prototype pollution.

1-4. [Vulnerability] prototype-pollution-utility

  • #️⃣ Line: 453
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-078, CWE-079, CWE-094, CWE-400, CWE-471, CWE-915
  • ✍️ Message: Properties are copied from src to obj without guarding against prototype pollution.

πŸ€– LLM Analysis Summary

🐞 Vulnerability Description

  • incorrect-suffix-check: νŠΉμ • λ¬Έμžμ—΄μ˜ 접미사λ₯Ό 확인할 λ•Œ, indexOf λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜κ³  κ·Έ κ²°κ³Όλ₯Ό 비ꡐ할 λ•Œ λ¬Έμžμ—΄μ˜ 길이λ₯Ό κ³ λ €ν•˜μ§€ μ•Šμ•„ 잘λͺ»λœ κ²°κ³Όλ₯Ό μ΄ˆλž˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • prototype-pollution-utility: 객체의 ν”„λ‘œνΌν‹°λ₯Ό 볡사할 λ•Œ, ν”„λ‘œν† νƒ€μž… μ˜€μ—Όμ„ λ°©μ§€ν•˜κΈ° μœ„ν•œ 검사가 μ—†μ–΄ κ³΅κ²©μžκ°€ 객체의 ν”„λ‘œν† νƒ€μž… 체인을 μ‘°μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

⚠️ Potential Risks

  • incorrect-suffix-check: 잘λͺ»λœ 접미사 ν™•μΈμœΌλ‘œ 인해 잘λͺ»λœ 둜직이 싀행될 수 있으며, μ΄λŠ” λ³΄μ•ˆ μ·¨μ•½μ μœΌλ‘œ μ΄μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • prototype-pollution-utility: κ³΅κ²©μžκ°€ 객체의 ν”„λ‘œν† νƒ€μž… 체인을 μ‘°μž‘ν•˜μ—¬ μ•…μ˜μ μΈ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κ±°λ‚˜ 데이터 무결성을 μ†μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ›  Recommended Fix

  • incorrect-suffix-check: indexOf λ©”μ„œλ“œμ˜ κ²°κ³Όλ₯Ό 비ꡐ할 λ•Œ, λ¬Έμžμ—΄μ˜ 길이λ₯Ό κ³ λ €ν•˜μ—¬ μ •ν™•ν•œ 접미사 확인을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.
  • prototype-pollution-utility: 객체 ν”„λ‘œνΌν‹° 볡사 μ‹œ, hasOwnPropertyλ₯Ό μ‚¬μš©ν•˜μ—¬ ν”„λ‘œν† νƒ€μž… 체인을 ν†΅ν•œ μ˜€μ—Όμ„ λ°©μ§€ν•©λ‹ˆλ‹€.

πŸ“Ž References

  • recursiveMerge ν•¨μˆ˜μ—μ„œ ν”„λ‘œν† νƒ€μž… μ˜€μ—Όμ„ λ°©μ§€ν•˜κΈ° μœ„ν•΄ __proto__, constructor, prototype 속성을 λ³΅μ‚¬ν•˜μ§€ μ•Šλ„λ‘ μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€.
  • findCordovaPath ν•¨μˆ˜μ—μ„œ 접미사 확인을 μ •ν™•νžˆ μˆ˜ν–‰ν•˜λ„λ‘ μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€.

πŸ—‚οΈ 2. handlebars.js

πŸ”Ž SAST Analysis Summary

2-1. [Vulnerability] overly-large-range

  • #️⃣ Line: 641
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020
  • ✍️ Message: Suspicious character range that is equivalent to [$%&'()*+,-./].

2-2. [Vulnerability] overly-large-range

  • #️⃣ Line: 641
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020
  • ✍️ Message: Suspicious character range that is equivalent to [$%&'()*+,-./].

2-3. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 883
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "\n".

2-4. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 883
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "\n".

πŸ€– LLM Analysis Summary

πŸ—‚οΈ 3. check_reqs.js

πŸ”Ž SAST Analysis Summary

3-1. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 31
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of '\r'.

3-2. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 31
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of '\n'.

3-3. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 35
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of '\r'.

3-4. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 35
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of '\n'.

πŸ—‚οΈ 4. device.js

πŸ”Ž SAST Analysis Summary

4-1. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 43
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of '\r'.

4-2. [Vulnerability] shell-command-injection-from-environment

  • #️⃣ Line: 64
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-078, CWE-088
  • ✍️ Message: This shell command depends on an uncontrolled absolute path.
    This shell command depends on an uncontrolled file name.

4-3. [Vulnerability] shell-command-injection-from-environment

  • #️⃣ Line: 73
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-078, CWE-088
  • ✍️ Message: This shell command depends on an uncontrolled absolute path.
    This shell command depends on an uncontrolled file name.

4-4. [Vulnerability] shell-command-injection-from-environment

  • #️⃣ Line: 78
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-078, CWE-088
  • ✍️ Message: This shell command depends on an uncontrolled absolute path.
    This shell command depends on an uncontrolled file name.

πŸ€– LLM Analysis Summary

🐞 Vulnerability Description

  • 이 μ½”λ“œμ—λŠ” μ‰˜ λͺ…λ Ήμ–΄ μ‹€ν–‰ μ‹œ μ‚¬μš©μž μž…λ ₯이 μ œλŒ€λ‘œ κ²€μ¦λ˜μ§€ μ•Šμ•„ λ°œμƒν•  수 μžˆλŠ” μ‰˜ λͺ…λ Ήμ–΄ μ£Όμž… 취약점이 μžˆμŠ΅λ‹ˆλ‹€. 특히, adb λͺ…령어에 μ‚¬μš©λ˜λŠ” target λ³€μˆ˜μ™€ apk_path λ³€μˆ˜λŠ” μ‚¬μš©μž μž…λ ₯μ΄λ‚˜ μ™ΈλΆ€ ν™˜κ²½μ— μ˜ν•΄ 영ν–₯을 받을 수 μžˆμŠ΅λ‹ˆλ‹€.

⚠️ Potential Risks

  • μ•…μ˜μ μΈ μ‚¬μš©μžκ°€ μ‰˜ λͺ…λ Ήμ–΄ μ£Όμž…μ„ 톡해 μ‹œμŠ€ν…œ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•  수 있으며, μ΄λŠ” μ‹œμŠ€ν…œμ— λŒ€ν•œ 무단 μ ‘κ·Όμ΄λ‚˜ 데이터 유좜 λ“±μ˜ λ³΄μ•ˆ 문제λ₯Ό μ΄ˆλž˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ›  Recommended Fix

  • μ‚¬μš©μž μž…λ ₯을 λ°›λŠ” λΆ€λΆ„μ—μ„œ μž…λ ₯값을 κ²€μ¦ν•˜κ³ , μ‰˜ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•  λ•ŒλŠ” child_process.exec λŒ€μ‹  child_process.spawnμ΄λ‚˜ child_process.execFile을 μ‚¬μš©ν•˜μ—¬ λͺ…λ Ήμ–΄ 인자λ₯Ό μ•ˆμ „ν•˜κ²Œ μ²˜λ¦¬ν•©λ‹ˆλ‹€.

πŸ“Ž References

  • replace(/\r/g, '')λ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ¨λ“  \r 문자λ₯Ό μ œκ±°ν•˜λ„λ‘ μˆ˜μ •ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • shell.exec μ‚¬μš© μ‹œ μž…λ ₯값을 μ² μ €νžˆ κ²€μ¦ν•˜κ±°λ‚˜, 더 μ•ˆμ „ν•œ λ°©λ²•μœΌλ‘œ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

πŸ—‚οΈ 5. emulator.js

πŸ”Ž SAST Analysis Summary

5-1. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 52
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of '\r'.

5-2. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 55
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of '\r'.

5-3. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 59
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of '\r'.

5-4. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 63
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of '\r'.

5-5. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 67
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of '\r'.

5-6. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 117
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of '\r'.

5-7. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 126
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of '\r'.

5-8. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 126
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of '\n'.

5-9. [Vulnerability] shell-command-injection-from-environment

  • #️⃣ Line: 308
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-078, CWE-088
  • ✍️ Message: This shell command depends on an uncontrolled absolute path.
    This shell command depends on an uncontrolled file name.

πŸ€– LLM Analysis Summary

🐞 Vulnerability Description

  • 이 μ½”λ“œμ—λŠ” μ‰˜ λͺ…λ Ήμ–΄ μ‹€ν–‰ μ‹œ μ‚¬μš©μž μž…λ ₯μ΄λ‚˜ ν™˜κ²½ λ³€μˆ˜λ‘œλΆ€ν„° μ „λ‹¬λœ 값이 μ œλŒ€λ‘œ κ²€μ¦λ˜μ§€ μ•Šμ•„, μ‰˜ λͺ…λ Ήμ–΄ μ£Όμž… 곡격에 μ·¨μ•½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • replace('\n', '') 및 replace('\r', '')λŠ” λ¬Έμžμ—΄μ˜ 첫 번째 λ°œμƒλ§Œ λŒ€μ²΄ν•˜μ—¬, 전체 λ¬Έμžμ—΄μ—μ„œ κ°œν–‰ 문자λ₯Ό μ œκ±°ν•˜μ§€ λͺ»ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

⚠️ Potential Risks

  • κ³΅κ²©μžκ°€ μ•…μ˜μ μΈ μž…λ ₯을 톡해 μž„μ˜μ˜ μ‰˜ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•  수 있으며, μ΄λŠ” μ‹œμŠ€ν…œμ˜ 무결성과 λ³΄μ•ˆμ„ μœ„ν˜‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • λΆˆμ™„μ „ν•œ κ°œν–‰ 문자 제거둜 인해 데이터가 μ˜ˆμƒμΉ˜ λͺ»ν•œ λ°©μ‹μœΌλ‘œ 처리될 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ›  Recommended Fix

  • μ‰˜ λͺ…령어에 μ‚¬μš©λ˜λŠ” λͺ¨λ“  μ‚¬μš©μž μž…λ ₯을 μ² μ €νžˆ κ²€μ¦ν•˜κ³ , ν•„μš”ν•œ 경우 μ΄μŠ€μΌ€μ΄ν”„ μ²˜λ¦¬ν•˜μ—¬ μ‰˜ λͺ…λ Ήμ–΄ μ£Όμž…μ„ λ°©μ§€ν•©λ‹ˆλ‹€.
  • λ¬Έμžμ—΄μ—μ„œ λͺ¨λ“  κ°œν–‰ 문자λ₯Ό μ œκ±°ν•˜κΈ° μœ„ν•΄ replace(/\n/g, '') 및 replace(/\r/g, '')λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

πŸ“Ž References

  • μ‰˜ λͺ…λ Ήμ–΄ μ£Όμž…μ„ λ°©μ§€ν•˜κΈ° μœ„ν•΄ μ‚¬μš©μž μž…λ ₯을 받을 λ•ŒλŠ” 항상 μž…λ ₯값을 κ²€μ¦ν•˜κ³ , ν•„μš”ν•œ 경우 μ΄μŠ€μΌ€μ΄ν”„ 처리λ₯Ό 톡해 μ•ˆμ „μ„±μ„ 확보해야 ν•©λ‹ˆλ‹€.
  • replace λ©”μ„œλ“œμ˜ μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄μ˜ λͺ¨λ“  κ°œν–‰ 문자λ₯Ό μ œκ±°ν•˜λ„λ‘ μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€.

πŸ—‚οΈ 6. bbwpignore.js

πŸ”Ž SAST Analysis Summary

6-1. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 97
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "*".

6-2. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 103
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "*".

πŸ€– LLM Analysis Summary

🐞 Vulnerability Description

μ½”λ“œμ—μ„œ μ™€μΌλ“œμΉ΄λ“œ νŒ¨ν„΄μ„ μ²˜λ¦¬ν•  λ•Œ, * 문자λ₯Ό μ •κ·œ ν‘œν˜„μ‹μœΌλ‘œ λ³€ν™˜ν•˜λŠ” κ³Όμ •μ—μ„œ 첫 번째 *만 λŒ€μ²΄ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” μ™€μΌλ“œμΉ΄λ“œκ°€ μ—¬λŸ¬ 개 ν¬ν•¨λœ νŒ¨ν„΄μ„ μ œλŒ€λ‘œ μ²˜λ¦¬ν•˜μ§€ λͺ»ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

⚠️ Potential Risks

μ™€μΌλ“œμΉ΄λ“œ νŒ¨ν„΄μ΄ μ œλŒ€λ‘œ μ²˜λ¦¬λ˜μ§€ μ•ŠμœΌλ©΄, 파일 λ§€μΉ­ 둜직이 μ˜λ„ν•œ λŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” λ³΄μ•ˆ 문제둜 μ΄μ–΄μ§ˆ 수 있으며, νŠΉμ • 파일이 잘λͺ» ν•„ν„°λ§λ˜κ±°λ‚˜ 포함될 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ›  Recommended Fix

λͺ¨λ“  * 문자λ₯Ό μ •κ·œ ν‘œν˜„μ‹μ˜ [^\/]*둜 λŒ€μ²΄ν•˜μ—¬ μ™€μΌλ“œμΉ΄λ“œ νŒ¨ν„΄μ΄ μ œλŒ€λ‘œ μ²˜λ¦¬λ˜λ„λ‘ μˆ˜μ •ν•©λ‹ˆλ‹€.

πŸ“Ž References

이 μˆ˜μ •μ€ μ™€μΌλ“œμΉ΄λ“œ νŒ¨ν„΄μ„ 보닀 μ •ν™•ν•˜κ²Œ μ²˜λ¦¬ν•˜μ—¬, 파일 λ§€μΉ­ 둜직의 신뒰성을 λ†’μž…λ‹ˆλ‹€. 이λ₯Ό 톡해 μ˜λ„ν•˜μ§€ μ•Šμ€ 파일이 ν•„ν„°λ§λ˜κ±°λ‚˜ ν¬ν•¨λ˜λŠ” 것을 λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ—‚οΈ 7. folderAccess.js

πŸ”Ž SAST Analysis Summary

7-1. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 45
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "\".

7-2. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 78
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "\".

7-3. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 45
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "\".

7-4. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 78
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "\".

πŸ€– LLM Analysis Summary

🐞 Vulnerability Description

이 μ½”λ“œμ—μ„œλŠ” folderPath.replace("\\", "/")λ₯Ό μ‚¬μš©ν•˜μ—¬ 경둜의 μ—­μŠ¬λž˜μ‹œλ₯Ό μŠ¬λž˜μ‹œλ‘œ λ³€ν™˜ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ replace λ©”μ„œλ“œλŠ” λ¬Έμžμ—΄μ—μ„œ 첫 번째 일치 ν•­λͺ©λ§Œ λŒ€μ²΄ν•˜λ―€λ‘œ, λͺ¨λ“  μ—­μŠ¬λž˜μ‹œλ₯Ό μŠ¬λž˜μ‹œλ‘œ λ³€ν™˜ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€. μ΄λŠ” λΆˆμ™„μ „ν•œ μž…λ ₯ κ²€μ¦μœΌλ‘œ μ΄μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

⚠️ Potential Risks

이 취약점은 경둜 μ‘°μž‘μ„ ν†΅ν•œ λ³΄μ•ˆ 문제λ₯Ό μœ λ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€. 특히, λͺ¨λ“  μ—­μŠ¬λž˜μ‹œκ°€ μŠ¬λž˜μ‹œλ‘œ λ³€ν™˜λ˜μ§€ μ•ŠμœΌλ©΄ κ²½λ‘œκ°€ 잘λͺ» ν•΄μ„λ˜μ–΄ μ˜λ„ν•˜μ§€ μ•Šμ€ 파일 μ‹œμŠ€ν…œ κ²½λ‘œμ— μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ›  Recommended Fix

λͺ¨λ“  μ—­μŠ¬λž˜μ‹œλ₯Ό μŠ¬λž˜μ‹œλ‘œ λ³€ν™˜ν•˜κΈ° μœ„ν•΄ replace λ©”μ„œλ“œ λŒ€μ‹  replaceAll λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. replaceAll λ©”μ„œλ“œλŠ” λ¬Έμžμ—΄ λ‚΄μ˜ λͺ¨λ“  일치 ν•­λͺ©μ„ λŒ€μ²΄ν•©λ‹ˆλ‹€.

πŸ“Ž References

replaceAll λ©”μ„œλ“œλŠ” ECMAScript 2021(ES12)μ—μ„œ λ„μž…λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ§Œμ•½ 이 λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  수 μ—†λŠ” ν™˜κ²½μ΄λΌλ©΄, μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ λͺ¨λ“  μ—­μŠ¬λž˜μ‹œλ₯Ό μŠ¬λž˜μ‹œλ‘œ λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€: folderPath.replace(/\\/g, "/").

πŸ—‚οΈ 8. utils.js

πŸ”Ž SAST Analysis Summary

8-1. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 239 ~ 250
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "*".

8-2. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 239 ~ 248
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of ">".

8-3. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 239 ~ 247
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "|".

8-4. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 239 ~ 246
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of /\/.

8-5. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 239 ~ 245
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "{{".

8-6. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 239 ~ 244
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "[".

8-7. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 239 ~ 243
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "<".

8-8. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 239 ~ 240
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "$".

8-9. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 263 ~ 264
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This does not escape backslash characters in the input.

8-10. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 263
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This does not escape backslash characters in the input.

8-11. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 239 ~ 250
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "*".

8-12. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 239 ~ 248
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of ">".

8-13. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 239 ~ 247
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "|".

8-14. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 239 ~ 246
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of /\/.

8-15. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 239 ~ 245
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "{{".

8-16. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 239 ~ 244
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "[".

8-17. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 239 ~ 243
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "<".

8-18. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 239 ~ 240
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This replaces only the first occurrence of "$".

8-19. [Vulnerability] incomplete-sanitization

  • #️⃣ Lines: 263 ~ 264
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This does not escape backslash characters in the input.

8-20. [Vulnerability] incomplete-sanitization

  • #️⃣ Line: 263
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-020, CWE-080, CWE-116
  • ✍️ Message: This does not escape backslash characters in the input.

8-21. [Vulnerability] shell-command-injection-from-environment

  • #️⃣ Line: 254
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-078, CWE-088
  • ✍️ Message: This shell command depends on an uncontrolled absolute path.
    This shell command depends on an uncontrolled absolute path.

πŸ€– LLM Analysis Summary

🐞 Vulnerability Description

이 μ½”λ“œμ˜ exec ν•¨μˆ˜λŠ” μ™ΈλΆ€ μž…λ ₯을 톡해 μ „λ‹¬λœ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. μ΄λ•Œ, λͺ…령어와 μΈμžκ°€ μ œλŒ€λ‘œ κ²€μ¦λ˜μ§€ μ•ŠμœΌλ©΄ μ‰˜ λͺ…λ Ήμ–΄ μ£Όμž… 곡격에 μ·¨μ•½ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 특히, args 배열에 ν¬ν•¨λœ μš”μ†Œλ“€μ΄ μ‚¬μš©μž μž…λ ₯에 μ˜ν•΄ μ‘°μž‘λ  수 μžˆλŠ” 경우, κ³΅κ²©μžκ°€ μž„μ˜μ˜ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

⚠️ Potential Risks

κ³΅κ²©μžκ°€ μ‰˜ λͺ…λ Ήμ–΄ μ£Όμž…μ„ 톡해 μ‹œμŠ€ν…œ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•  수 있으며, μ΄λŠ” μ‹œμŠ€ν…œμ˜ 무단 μ ‘κ·Ό, 데이터 유좜, μ„œλΉ„μŠ€ 쀑단 λ“±μ˜ μ‹¬κ°ν•œ λ³΄μ•ˆ 문제λ₯Ό μ΄ˆλž˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ›  Recommended Fix

child_process.exec λŒ€μ‹  child_process.spawn λ˜λŠ” child_process.execFile을 μ‚¬μš©ν•˜μ—¬ λͺ…령어와 인자λ₯Ό λΆ„λ¦¬ν•˜κ³ , 인자λ₯Ό λ°°μ—΄λ‘œ μ „λ‹¬ν•˜μ—¬ μ‰˜ λͺ…λ Ήμ–΄ μ£Όμž…μ„ λ°©μ§€ν•©λ‹ˆλ‹€. 이 방법은 μ‰˜μ„ μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ μ‰˜ λ©”νƒ€λ¬Έμžμ— μ˜ν•œ 곡격을 λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“Ž References

child_process.spawnλŠ” 기본적으둜 μ‰˜μ„ μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ μ‰˜ λͺ…λ Ήμ–΄ μ£Όμž… 곡격을 λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 인자λ₯Ό λ°°μ—΄λ‘œ μ „λ‹¬ν•˜μ—¬ 각 μΈμžκ°€ κ°œλ³„μ μœΌλ‘œ μ²˜λ¦¬λ˜λ„λ‘ ν•©λ‹ˆλ‹€.

πŸ—‚οΈ 9. build.js

πŸ”Ž SAST Analysis Summary

9-1. [Vulnerability] shell-command-injection-from-environment

  • #️⃣ Line: 53
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-078, CWE-088
  • ✍️ Message: This shell command depends on an uncontrolled absolute path.

πŸ€– LLM Analysis Summary

🐞 Vulnerability Description

이 μ½”λ“œμ—μ„œλŠ” shell.execλ₯Ό μ‚¬μš©ν•˜μ—¬ μ™ΈλΆ€ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ΄λ•Œ cmd λ³€μˆ˜μ— μ ˆλŒ€ κ²½λ‘œκ°€ ν¬ν•¨λ˜μ–΄ 있으며, 이 κ²½λ‘œκ°€ μ™ΈλΆ€ μž…λ ₯에 μ˜ν•΄ μ‘°μž‘λ  수 μžˆλŠ” κ°€λŠ₯성이 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” μ‰˜ λͺ…λ Ήμ–΄ μ£Όμž…(shell command injection) 취약점을 μ΄ˆλž˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

⚠️ Potential Risks

κ³΅κ²©μžκ°€ ROOT 경둜λ₯Ό μ‘°μž‘ν•  수 μžˆλŠ” 경우, μ•…μ˜μ μΈ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜μ—¬ μ‹œμŠ€ν…œμ— ν”Όν•΄λ₯Ό 쀄 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” μ‹œμŠ€ν…œ 파일의 손상, 데이터 유좜, κΆŒν•œ μƒμŠΉ λ“±μ˜ μ‹¬κ°ν•œ λ³΄μ•ˆ 문제둜 μ΄μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ›  Recommended Fix

shell.execλ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•  λ•Œ, λͺ…령어와 인수λ₯Ό λΆ„λ¦¬ν•˜μ—¬ μ œκ³΅ν•¨μœΌλ‘œμ¨ μ‰˜ λͺ…λ Ήμ–΄ μ£Όμž…μ„ λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. child_process.execFile λ˜λŠ” child_process.spawn와 같은 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ…령어와 인수λ₯Ό λΆ„λ¦¬ν•˜μ—¬ μ‹€ν–‰ν•©λ‹ˆλ‹€.

πŸ“Ž References

shell.execλ₯Ό μ‚¬μš©ν•˜λŠ” λŒ€μ‹  child_process λͺ¨λ“ˆμ˜ execFile λ˜λŠ” spawn을 μ‚¬μš©ν•˜λŠ” 것이 더 μ•ˆμ „ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이 κ²½μš°μ—λŠ” shell.exec의 μ‚¬μš©μ„ μœ μ§€ν•˜λ©΄μ„œ λͺ…령어와 인수λ₯Ό λΆ„λ¦¬ν•˜μ—¬ μ „λ‹¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ μˆ˜μ •ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

πŸ—‚οΈ 10. clean.js

πŸ”Ž SAST Analysis Summary

10-1. [Vulnerability] shell-command-injection-from-environment

  • #️⃣ Line: 31
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-078, CWE-088
  • ✍️ Message: This shell command depends on an uncontrolled absolute path.

πŸ€– LLM Analysis Summary

🐞 Vulnerability Description

이 μ½”λ“œμ—μ„œλŠ” shell.execλ₯Ό μ‚¬μš©ν•˜μ—¬ μ™ΈλΆ€ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ΄λ•Œ μ‚¬μš©λ˜λŠ” κ²½λ‘œλŠ” path.join을 톡해 μƒμ„±λ˜μ§€λ§Œ, μ—¬μ „νžˆ ν™˜κ²½ λ³€μˆ˜λ‚˜ μ™ΈλΆ€ μž…λ ₯에 μ˜ν•΄ μ‘°μž‘λ  κ°€λŠ₯성이 μžˆλŠ” μ ˆλŒ€ 경둜λ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€.

⚠️ Potential Risks

κ³΅κ²©μžκ°€ ν™˜κ²½ λ³€μˆ˜λ₯Ό μ‘°μž‘ν•˜μ—¬ μ•…μ˜μ μΈ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•  수 μžˆλŠ” κ°€λŠ₯성이 μ‘΄μž¬ν•©λ‹ˆλ‹€. μ΄λŠ” μ‹œμŠ€ν…œμ— λŒ€ν•œ κΆŒν•œ μƒμŠΉμ΄λ‚˜ 데이터 손상 λ“±μ˜ λ³΄μ•ˆ 문제λ₯Ό μΌμœΌν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ›  Recommended Fix

path.join을 톡해 μƒμ„±λœ 경둜λ₯Ό μ‚¬μš©ν•˜λŠ” 경우, κ²½λ‘œκ°€ μ˜ˆμƒλœ 디렉토리 내에 μžˆλŠ”μ§€ ν™•μΈν•˜μ—¬ 경둜 탐색 곡격을 λ°©μ§€ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ˜ν•œ, μ™ΈλΆ€ λͺ…λ Ήμ–΄ μ‹€ν–‰ μ‹œμ—λŠ” μž…λ ₯값을 κ²€μ¦ν•˜κ±°λ‚˜ μ œν•œν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€.

πŸ“Ž References

path.join을 톡해 μƒμ„±λœ κ²½λ‘œκ°€ μ˜ˆμƒλœ 디렉토리 내에 μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” λ°©λ²•μœΌλ‘œ buildFilePath.startsWith(ROOT)λ₯Ό μ‚¬μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 이둜써 경둜 탐색 곡격을 λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ—‚οΈ 11. cordova-incl.js

πŸ”Ž SAST Analysis Summary

11-1. [Vulnerability] xss-through-dom

  • #️⃣ Line: 70
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-079, CWE-116
  • ✍️ Message: DOM text is reinterpreted as HTML without escaping meta-characters.

11-2. [Vulnerability] xss-through-dom

  • #️⃣ Line: 60
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-079, CWE-116
  • ✍️ Message: DOM text is reinterpreted as HTML without escaping meta-characters.

11-3. [Vulnerability] xss-through-dom

  • #️⃣ Line: 70
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-079, CWE-116
  • ✍️ Message: DOM text is reinterpreted as HTML without escaping meta-characters.

11-4. [Vulnerability] xss-through-dom

  • #️⃣ Line: 60
  • πŸ›‘οΈ Severity: WARNING
  • πŸ”– CWE-079, CWE-116
  • ✍️ Message: DOM text is reinterpreted as HTML without escaping meta-characters.

πŸ€– LLM Analysis Summary

🐞 Vulnerability Description

document.writeλ₯Ό μ‚¬μš©ν•˜μ—¬ μ™ΈλΆ€ 슀크립트λ₯Ό μ‚½μž…ν•˜λŠ” 것은 XSS(크둜슀 μ‚¬μ΄νŠΈ μŠ€ν¬λ¦½νŒ…) 곡격에 μ·¨μ•½ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 특히, cordovaPathκ°€ μ™ΈλΆ€ μž…λ ₯에 μ˜ν•΄ μ‘°μž‘λ  수 μžˆλŠ” 경우, κ³΅κ²©μžκ°€ μ•…μ˜μ μΈ 슀크립트λ₯Ό μ‚½μž…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

⚠️ Potential Risks

κ³΅κ²©μžκ°€ cordovaPath의 값을 μ‘°μž‘ν•˜μ—¬ μ•…μ„± 슀크립트λ₯Ό λ‘œλ“œν•˜κ²Œ 되면, μ‚¬μš©μžμ˜ λΈŒλΌμš°μ €μ—μ„œ μž„μ˜μ˜ μ½”λ“œλ₯Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” μ‚¬μš©μž 데이터 νƒˆμ·¨, μ„Έμ…˜ ν•˜μ΄μž¬ν‚Ή λ“±μ˜ μ‹¬κ°ν•œ λ³΄μ•ˆ 문제λ₯Ό μ΄ˆλž˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ›  Recommended Fix

document.write λŒ€μ‹  DOM APIλ₯Ό μ‚¬μš©ν•˜μ—¬ 슀크립트λ₯Ό μ•ˆμ „ν•˜κ²Œ μ‚½μž…ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 XSS 곡격 벑터λ₯Ό 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“Ž References

document.writeλŠ” DOM이 μ™„μ „νžˆ λ‘œλ“œλœ 후에 호좜될 경우, 기쑴의 λͺ¨λ“  HTML을 μ œκ±°ν•˜κ³  μƒˆλ‘œμš΄ λ¬Έμ„œλ₯Ό μž‘μ„±ν•  수 μžˆμœΌλ―€λ‘œ, DOM APIλ₯Ό μ‚¬μš©ν•˜μ—¬ 슀크립트λ₯Ό μ•ˆμ „ν•˜κ²Œ μ‚½μž…ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

πŸ’‰ Fix Details

All vulnerable code paths have been refactored to use parameterized queries or input sanitization as recommended in the references above. Please refer to the diff for exact code changes.


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant