ProcessStartInfo์™€ Command Injection ๋ฆฌ์Šคํฌ

ํ•œ ๋•Œ ๋งŽ์€ ์กฐ๋ช…์„ ๋ฐ›์•˜๋˜ SQL Injection ๋ณด์•ˆ ์ด์Šˆ์— ๋Œ€ํ•ด ๊ธฐ์–ตํ•˜๊ณ  ๊ณ„์‹  ๋ถ„๋“ค์ด ๋งŽ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ’ ์ด์™ธ์— ๋‹ค๋ฅธ ์ถ”๊ฐ€ ๋ช…๋ น๋ฌธ์˜ ์‚ฝ์ž…์„ ํ—ˆ์šฉํ•˜๋Š” ๋ณด์•ˆ ๋ฌธ์ œ๋กœ, ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด์— ๊ฐ’์„ ์ง์ ‘ string concatenation์œผ๋กœ ๋”ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์‰ฝ๊ฒŒ ์ผ์–ด๋‚˜๊ณค ํ–ˆ์ฃ .

๋น„์Šทํ•œ ๋ฆฌ์Šคํฌ๊ฐ€ System.Diagnostics.ProcessStartInfo์—์„œ๋„ ๋ฐœ์ƒํ•  ๊ฐœ์—ฐ์„ฑ์ด ์žˆ์–ด์„œ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•ด๋ด…๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ๋•Œ, ํŽธ์˜ ์ƒ Arguments ์†์„ฑ์— ๋ชจ๋“  ๋ฌธ์ž์—ด ์™„์„ฑํ•ด์„œ ์ง‘์–ด๋„ฃ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์— string concatenation ๋ฐฉ์‹์œผ๋กœ ์™ธ๋ถ€ ์ธ์ž๋ฅผ ๋ฐ›์•„๋“ค์ด๊ฒŒ ํ•  ๊ฒฝ์šฐ command injection ๋ณด์•ˆ ๋ฆฌ์Šคํฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ Arguments ๋Œ€์‹  ArgumentList๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ์ถ”์ฒœํ•˜๋Š”๋ฐ, ArgumentList์— ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ๊ฐ’์€ OS์˜ ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ๊ธฐ ๊ธฐ์ค€์— ๋งž๊ฒŒ ์ตœ์ข… ์ „๋‹ฌ๋  ์ธ์ž ๋ชฉ๋ก์—์„œ ์ด์Šค์ผ€์ดํ”„ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๋ฌธ์ž๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋ฏ€๋กœ ์ด๋Ÿฐ ๋ฆฌ์Šคํฌ๊ฐ€ ๊ฐ์†Œํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋‹ค๋งŒ Arguments์™€ ArgumentList๋Š” ์„ž์–ด ์“ธ ์ˆ˜ ์—†๊ณ , ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์จ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

7๊ฐœ์˜ ์ข‹์•„์š”

๋ฌธ์„œ์—๋„ ์“ฐ์—ฌ์ ธ ์žˆ์ง€๋งŒ. ArgumentList๋ผ๊ณ  ํ•ด์„œ ๋ฐ˜๋“œ์‹œ ์‹ ๋ขฐ ๊ฐ€๋Šฅํ•œ ๊ฒƒ๋„ ์•„๋‹™๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•˜๋ฉด ์ž…๋ ฅ์„ Encode / Escape ํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ฆ๋œ ์ž…๋ ฅ๋งŒ ๋ฐ›๋Š”๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”

๋‹ค๋ฅธ ์–˜๊ธฐ์ด๊ธด ํ•œ๋ฐ Injection ํ•˜๋‹ˆ๊นŒ ์ƒ๊ฐ๋‚˜์„œ ๊ณต์œ  ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

ํ”„๋กฌํ”„ํŠธ ์ธ์ ์…˜ ๊ณต๊ฒฉ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”? | IBM

2๊ฐœ์˜ ์ข‹์•„์š”