์—…๋ฐ์ดํŠธ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
New releaseAug 2, 2026

burner-net v1.3.0

์ œ๋กœ ํŠธ๋Ÿฌ์ŠคํŠธ ์•ˆํ‹ฐ-ํฌ๋ Œ์‹ HTTP ํด๋ผ์ด์–ธํŠธ. ๋น„๋ฐ€์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ํ”์ ์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. ์Šคํ…”์Šค ํƒฑํฌ ์†์˜ CPR. ๐Ÿ‘ป

๊ณต์œ 

BurnerNet

์ œ๋กœ ํŠธ๋Ÿฌ์ŠคํŠธ, ์•ˆํ‹ฐ-ํฌ๋ Œ์‹ HTTP ํด๋ผ์ด์–ธํŠธ. ๋น„๋ฐ€์„ ์ง€์šฐ๊ณ , ํ”์ ์„ ๋Š์Šต๋‹ˆ๋‹ค. ์Šคํ…”์Šค ํƒฑํฌ์˜ CPR. ๐Ÿ‘ป

BurnerNet์€ C++20 ์•ˆํ‹ฐ-ํฌ๋ Œ์‹ HTTP ํด๋ผ์ด์–ธํŠธ์ž…๋‹ˆ๋‹ค. ๋กœ์ปฌ ๋จธ์‹ ์„ ์™„์ „ํžˆ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•ด ์œ ์—ฐํ•˜๊ณ  CPR๊ณผ ์œ ์‚ฌํ•œ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. RAM์—์„œ ๋น„๋ฐ€์„ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ง€์šฐ๊ณ  ์‹คํ–‰ ํ”์ ์„ ์ฐจ๋‹จํ•˜์—ฌ ์Šค์บ๋„ˆ์™€ ๋””๋ฒ„๊ฑฐ๋กœ๋ถ€ํ„ฐ ๋กœ์ง์„ ์ˆจ๊น๋‹ˆ๋‹ค.

์ผ๋ฐ˜ HTTP์—๋Š” ์นœ์ˆ™ํ•œ ํ˜ธ์ŠคํŠธ ํ˜ธํ™˜ ๊ธฐ๋ณธ๊ฐ’์„ ์ œ๊ณตํ•˜๊ณ , ์ ๋Œ€์  ํ™˜๊ฒฝ์—๋Š” ๋ช…์‹œ์ ์ธ Hardened ํ”„๋กœํ•„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฒฝ๋กœ ๋ชจ๋‘ ์ˆ˜๋ช…์ด ์งง์€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ ํ˜ธํ•˜๋ฉฐ, ๊ณ ๊ธ‰ ์‹ ๋ขฐ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์†Œ์œ ํ•ฉ๋‹ˆ๋‹ค.

BurnerNet์ด ๋‹ค์šด๋กœ๋“œํ•œ ํŽ˜์ด๋กœ๋“œ๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ์ž์‚ฐ ๋””์Šคํฌ๋žจ๋ธ”๋ง์„ ์œ„ํ•ด RipStop Codec์„ ํ™•์ธํ•˜์„ธ์š”.

์›์น™ โ€ข ์‹œ์ž‘ํ•˜๊ธฐ โ€ข ํ†ตํ•ฉ ๊ฒฝ๋กœ โ€ข ๋ณด์•ˆ ํ˜„์‹ค: ํ™”์ดํŠธ๋ฐ•์Šค ๋ฐฉ์–ด

ํ•œ๋ˆˆ์— ๋ณด๊ธฐ

์˜์—ญBurnerNet
์–ธ์–ดC++20
ํ”Œ๋žซํผWindows x64/x86 (์ตœ์šฐ์„  ์ง€์›), Linux (๊ฒ€์ฆ๋จ)
์ „์†กlibcurl ๊ธฐ๋ฐ˜ HTTP(S)
๋ฉ”๋ชจ๋ฆฌ ์œ„์ƒ์•ˆ์ „ํ•œ ์ง€์šฐ๊ธฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฐ ์ง€์šฐ๊ธฐ ํ• ๋‹น์ž
ํฌ๋ Œ์‹ ์œ„์ƒBurnerNet ๊ด€๋ฆฌ ์ „์†ก ์ƒํƒœ ์ „๋ฐ˜์— ๊ฑธ์นœ ์ž๋™ ํž™/์Šคํƒ ์Šคํฌ๋Ÿฌ๋น™
๋™์  ๋ถ„์„ํ˜ธ์ถœ ์Šคํƒ ๊ฒฉ๋ฆฌ๋ฅผ ํ†ตํ•ด ์†Œ๋น„์ž์™€ ์ „์†ก ๊ฐ„ ์—ฐ๊ฒฐ์„ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Œ
๋นŒ๋“œ ๊ฐ•ํ™”์„ ํƒ์  ์ง„๋‹จ ๋ฌธ์ž์—ด ์ œ๊ฑฐ, ๋‚œ๋…ํ™”๋œ ๋ฆฌํ„ฐ๋Ÿด, ๊ฐ•ํ™”๋œ ๋นŒ๋“œ์—์„œ C++ ๋Ÿฐํƒ€์ž„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ฐ์†Œ
๋Ÿฐํƒ€์ž„ ๊ฐ•ํ™”DoH ์ง€์›, ์ œ๊ณต์ž ๊ธฐ๋ฐ˜ ๋น„๋ฐ€, ๋” ์—„๊ฒฉํ•œ ์‹ ๋ขฐ ์ œ์–ด
ํ†ตํ•ฉCMake ๋˜๋Š” Visual Studio ์†Œ์Šค ๋“œ๋กญ

์‚ฌ์šฉ ์ด์œ 

์ผ๋ฐ˜ HTTP ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ™˜๊ฒฝ์— ๋น„ํ•ด ๋„ˆ๋ฌด ์‹ ๋ขฐ์ ์ผ ๋•Œ BurnerNet์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค:

  • ์ „์—ญ ์ „์†ก์„ ๊ณต์œ ํ•˜๋Š” ๋Œ€์‹  ์š”์ฒญ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ˆ˜๋ช…์ด ์งง๊ฒŒ ์œ ์ง€
  • ๋กœ์ปฌ DNS ๋ฐ ๊ธฐํƒ€ ํ˜ธ์ŠคํŠธ ๊ธฐ๋ณธ๊ฐ’์— ๋Œ€ํ•œ ์˜์กด์„ฑ ๊ฐ์†Œ
  • ํ† ํฐ, ์ธ์ฆ์„œ ๋ฐ ๊ฒ€์ฆ ๋น„๋ฐ€์„ ํ•„์š”ํ•  ๋•Œ๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ
  • ์‘๋‹ต ๊ฒ€์ฆ ๋กœ์ง์„ ์ž์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์— ์œ ์ง€
  • ๊ฐ•ํ™”๋œ ๋นŒ๋“œ์—์„œ ๋ช…๋ฐฑํ•œ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ๋ฌธ์ž์—ด ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ฐ์†Œ

๋Œ€์ƒ ์‚ฌ์šฉ์ž

BurnerNet์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค:

  • ๊ณ ๊ฐ€์น˜ ์ธ์ฆ, ๋ผ์ด์„ ์‹ฑ ๋˜๋Š” ์—…๋ฐ์ดํŠธ ์š”์ฒญ์ด ์žˆ๋Š” Windows ๋ฐ์Šคํฌํƒ‘ ์•ฑ
  • ์™„์ „ํžˆ ์‹ ๋ขฐํ•˜์ง€ ์•Š๋Š” ํ˜ธ์ŠคํŠธ์—์„œ ์‹คํ–‰๋˜๋Š” ์ž„๋ฒ ๋””๋“œ ๋˜๋Š” ์ธ์ ์…˜ ์ฝ”๋“œ
  • ์œ ์—ฐํ•œ C++ API๋ฅผ ํฌ๊ธฐํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ๋” ์—„๊ฒฉํ•œ ์ „์†ก ๊ฒ€์‚ฌ๋ฅผ ์›ํ•˜๋Š” ๋„๊ตฌ

ํ‘œ์ค€ ์Šคํƒ ๋Œ€ BurnerNet

๊ด€์‹ฌ์‚ฌ์ผ๋ฐ˜์ ์ธ HTTP ์ŠคํƒBurnerNet
ํด๋ผ์ด์–ธํŠธ ์ˆ˜๋ช…์ข…์ข… ๊ณต์œ ๋˜๋ฉฐ ์˜ค๋ž˜ ์ง€์†๋จ์ผํšŒ์šฉ ํด๋ผ์ด์–ธํŠธ ๋ฐ ๋ฒ„์ŠคํŠธ ๋ฒ”์œ„ ์‚ฌ์šฉ์„ ์œ„ํ•ด ์„ค๊ณ„๋จ
์ค‘์š” ๊ฐ’๋น„๋ฐ€์ด ํ•„์š” ์ด์ƒ์œผ๋กœ ์˜ค๋ž˜ ์„ค์ •์ด๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„ ์žˆ์Œ์ œ๊ณต์ž ์ฝœ๋ฐฑ์ด ์‚ฌ์šฉ ์‹œ์ ์— ๊ฐ€์ ธ์˜ด
DNS ๋ฐ ์‹ ๋ขฐ๋ณดํ†ต ๋กœ์ปฌ ๋ฆฌ์กธ๋ฒ„ ๋ฐ ํ˜ธ์ŠคํŠธ ๊ธฐ๋ณธ๊ฐ’์„ ์ƒ์†DoH ํด๋ฐฑ ๋ฐ ๊ณ ์ • ํ‚ค๋ฅผ ํฌํ•จํ•œ ๋” ์—„๊ฒฉํ•œ ์‹ ๋ขฐ ์ œ์–ด ์ง€์›
๊ฒ€์ฆ์•ฑ๋ณ„ ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ๋Š” ๋‚˜์ค‘์— ์ถ”๊ฐ€๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ์‚ฌ์ „ ์ ๊ฒ€, ์ „์†ก ๋ฐ ์‘๋‹ต ๊ฒ€์ฆ ํ›„ํฌ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ๊ตฌ์ถ•๋จ

๋ฐฉ์–ด ๊ฒฐ๊ณผ

  • ์ œ๋กœ-๊ณ ์ŠคํŠธ ๋ฉ”๋ชจ๋ฆฌ ์•„ํ‚คํ…์ฒ˜: BurnerNet์€ ์‚ฌ์šฉ์ž ์ •์˜ ์ ‘๋‘์‚ฌ-ํฌ๊ธฐ ์Šคํฌ๋Ÿฌ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ libcurl ๋ฐ OpenSSL ๊ธฐ๋ฐ˜ ํ๋ฆ„์˜ ๋‚ด๋ถ€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๊ฒฝ๋กœ๋ฅผ ํ›„ํ‚นํ•ฉ๋‹ˆ๋‹ค. ๋ฏผ๊ฐํ•œ ์ „์†ก ๋ฒ„ํผ๋Š” BurnerNet ๊ด€๋ฆฌ ์ˆ˜๋ช…์„ ๋ฒ—์–ด๋‚  ๋•Œ ์ง€์›Œ์ง‘๋‹ˆ๋‹ค. ์ด ์œ„์ƒ์€ ๋ฌธ์„œ์— ์„ค๋ช…๋œ ๊ฐ์‚ฌ๋œ ๊ตฌ์„ฑ ๋‚ด์—์„œ Windows์™€ Linux ๋ชจ๋‘์—์„œ ๊ฒ€์ฆ๋ฉ๋‹ˆ๋‹ค.
  • ์Šคํƒ-ํ”„๋ ˆ์ž„ ์Šค์™€์ดํ•‘: ๋ชจ๋“  ์š”์ฒญ ํ›„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ž์ฒด ์Šค๋ ˆ๋“œ ์Šคํƒ(์ตœ๊ณ  ์ˆ˜์œ„ ํ‘œ์‹œ ์Šคํฌ๋Ÿฌ๋น™)์„ ๋Šฅ๋™์ ์œผ๋กœ ์Šคํฌ๋Ÿฌ๋น™ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ œ์–ด๊ถŒ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ ์ „์— ์ผ์‹œ์ ์ธ ์ „์†ก ์กฐ๊ฐ์„ ํŒŒ๊ดดํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์ด๋™-ํ‘œ์  ํž™: ์ผํšŒ์šฉ ์ „์†ก๊ณผ ์ •๋ ฌ๋œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ—ค๋”์˜ ์กฐํ•ฉ์€ ๋†’์€ ์ฃผ์†Œ ๊ณต๊ฐ„ ๋ถ„์‚ฐ์„ ์ƒ์„ฑํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ์•ˆ์ •์ ์ธ ํฌ์ธํ„ฐ ๋งคํ•‘์— ์ €ํ•ญํ•ฉ๋‹ˆ๋‹ค.
  • ์ˆ˜๋ช…์ด ์งง์€ ์š”์ฒญ ์ƒํƒœ: BurnerNet์€ ํ”„๋กœ์„ธ์Šค ์ „์ฒด ์‹ฑ๊ธ€ํ†ค ์ „์†ก ๋Œ€์‹  ์ผํšŒ์šฉ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ ์‹ ๋ขฐ ๊ฐ์†Œ: DoH ์ง€์›, ๊ณ ์ • ํ‚ค ์ง€์› ๋ฐ ์ „์†ก ๊ฐ์‚ฌ๋Š” ์†์ƒ๋œ ๋กœ์ปฌ ๊ธฐ๋ณธ๊ฐ’์— ๋Œ€ํ•œ ์˜์กด์„ฑ์„ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
  • ๋‚ฎ์€ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ๋…ธ์ถœ: ์ œ๊ณต์ž ์ฝœ๋ฐฑ ๋ฐ ์•ˆ์ „ํ•œ ์ง€์šฐ๊ธฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ์ธ์ฆ์„œ, ํ‚ค, ํ† ํฐ ๋ฐ ๊ธฐํƒ€ ๋ฏผ๊ฐํ•œ ๋ฒ„ํผ์˜ ์ˆ˜๋ช…์„ ์ค„์ž…๋‹ˆ๋‹ค.
  • ์•ฑ ์†Œ์œ  ๊ฒ€์ฆ: ์‘๋‹ต ๊ฒ€์ฆ์€ WithResponseVerifier(...)๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์— ์œ ์ง€๋˜๋ฉฐ, ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํ•˜๋“œ์ฝ”๋”ฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋” ์–ด๋ ค์šด ์ •์  ์ง€๋ฌธ ์ฑ„์ทจ: ๊ฐ•ํ™”๋œ ๋นŒ๋“œ๋Š” BURNERNET_DIAGNOSTIC_STRINGS=0์„ ์„ค์ •ํ•˜์—ฌ ErrorCodeToString(...)์ด ๊ธฐํ˜ธ ์˜ค๋ฅ˜ ์ด๋ฆ„์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ์•ˆ์ •์ ์ธ E<number> ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ€๋ฒผ์šด ์ž„ํฌํŠธ ๋ฐฐํฌ ์˜ต์…˜: BURNERNET_HARDEN_IMPORTS=1์€ BurnerNet์˜ Windows KernelResolver ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง์ ‘ ์ž„ํฌํŠธ ํ…Œ์ด๋ธ”์— ๊ด‘๊ณ ํ•˜๋Š” ๋Œ€์‹  ๋Ÿฐํƒ€์ž„ ์ข…์†์„ฑ์„ ๋™์ ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ˜ธ์ถœ ์Šคํƒ ๊ฒฉ๋ฆฌ (๋น„๋™๊ธฐ ํ•ธ๋“œ์˜คํ”„): .WithStackIsolation(true)๋ฅผ ํ†ตํ•ด ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ถ„๋ฆฌ๋œ ์ž‘์—…์ž ์Šค๋ ˆ๋“œ์—์„œ ์ „์†ก ์ˆ˜๋ช… ์ฃผ๊ธฐ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ˜ธ์ถœ์ž์˜ ํ˜ธ์ถœ ์Šคํƒ์„ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ฐจ๋‹จํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์˜ ์ง์ ‘์ ์ธ ์ƒํ–ฅ์‹ ์ถ”์ ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒ€์ฆ๋œ ์Šคํ…”์Šค

BurnerNet์€ ๋‹จ์ˆœํžˆ ๊ฐ€๋ฒผ์šด ์ž„ํฌํŠธ ๊ฐ•ํ™” ๋ชจ๋“œ๋ฅผ ์ฃผ์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํŠน์ • ํ…Œ์ŠคํŠธ ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ๊ฐ์‚ฌ ๋…ธํŠธ๋„ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. BURNERNET_HARDEN_IMPORTS=ON์„ ์‚ฌ์šฉํ•œ Windows x64 ๋ฆด๋ฆฌ์Šค ๊ฐ์‚ฌ์—์„œ:

  • IAT ๋ธ”๋ž™์•„์›ƒ: ๊ฐ์‚ฌ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ libcurl.dll, ws2_32.dll, bcrypt.dll ๋˜๋Š” crypt32.dll์— ๋Œ€ํ•œ ํ•ญ๋ชฉ์ด ๊ด€์ฐฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ๋‹คํฌ์•„์›ƒ: ํฌ๋ Œ์‹ ์Šค์บ”(Cheat Engine์˜ "All Strings")์ด ํ”„๋กœ์„ธ์Šค ํž™ ๋˜๋Š” ์Šคํƒ์—์„œ ๋ฏผ๊ฐํ•œ ์นด๋‚˜๋ฆฌ URL์ด๋‚˜ ํ—ค๋”๋ฅผ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋””๋ฒ„๊ฑฐ ๋ธ”๋ผ์ธ๋“œ๋‹ˆ์Šค: ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ "ID ์ด๋™"์„ ํŠธ๋ฆฌ๊ฑฐํ•จ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์˜์‚ฌ ๊ฒฐ์ •์ž(์•ฑ)์™€ ์ „์†ก์ž(BurnerNet)๋Š” ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ ID์—์„œ ์ž‘๋™ํ•˜์—ฌ ๋ผ์ด๋ธŒ ๋””๋ฒ„๊น… ์„ธ์…˜ ์ค‘ ์ƒํ–ฅ์‹ ์ถ”์ ์„ ์ค„์ž…๋‹ˆ๋‹ค.
  • ๋…ธ์ด์ฆˆ ๋Œ€ ์‹ ํ˜ธ: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ง€์šฐ๊ธฐ ๊ถŒํ•œ ๋‚ด์—์„œ ํฌ๋ Œ์‹ ์œ„์ƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜์ง€๋งŒ, OS ๋ฐ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์— ๋‚จ์•„ ์žˆ๋Š” ์‹œ์Šคํ…œ ์ˆ˜์ค€์˜ "๊ทธ๋ฆผ์ž"๋ฅผ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ์„ธ๋ถ€ ์‚ฌํ•ญ ๋ฐ ๋ฐฉ๋ฒ•๋ก :

์‹œ์ž‘ํ•˜๊ธฐ

๊ฐ€์žฅ ๋น ๋ฅธ ๊ฒฝ๋กœ:

  • CMake ๋˜๋Š” Visual Studio ์†Œ์Šค ๋“œ๋กญ์œผ๋กœ ๋นŒ๋“œ์— BurnerNet์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.
  • <burner/net.h>๋ฅผ ํฌํ•จํ•˜์„ธ์š”.
  • ์Šคํƒ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋งŒ๋“ค๊ณ , ์š”์ฒญ์„ ๋ณด๋‚ธ ๋‹ค์Œ, ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๊ฒŒ ๋‘์„ธ์š”.

์ตœ์†Œ ์˜ˆ์ œ:

#include <iostream>

#include <burner/net.h>

int main() {
    burner::net::Client client;
    if (!client.IsReady()) {
        std::cerr << burner::net::ErrorCodeToString(client.InitError()) << '\n';
        return 1;
    }

    const auto response = client
        .Get("https://example.com")
        .WithHeader("Accept", "text/html")
        .WithTimeoutSeconds(10)
        .Send();

    if (!response.TransportOk()) {
        std::cerr << burner::net::ErrorCodeToString(response.transport_error) << '\n';
        return 1;
    }

    std::cout << "HTTP " << response.status_code << '\n';
    return 0;
}

Client๋Š” ํ‘œ์ค€ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค: ์‹œ์Šคํ…œ CA, DNS, ํ”„๋ก์‹œ, TLS ํ”ผ์–ด ๋ฐ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๊ฒ€์ฆ ํ™œ์„ฑํ™”. WithCasualDefaults()๋Š” ํ‘œ์ค€ ํ˜ธํ™˜ ๋ณ„์นญ์œผ๋กœ ๊ณ„์† ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ณด์•ˆ์ด ์ค‘์š”ํ•œ ํŠธ๋ž˜ํ”ฝ์˜ ๊ฒฝ์šฐ Hardened ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. Build()๋Š” ์š”์ฒญ ์ „์— ๋ˆ„๋ฝ๋œ ์ œ์–ด๋ฅผ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค:

auto secure = burner::net::ClientBuilder(burner::net::ClientProfile::Hardened)
    .WithMtlsProvider(ProvideMtlsCredentials)
    .WithSecurityPolicy(AppSecurityPolicy{})
    .WithDnsFallback(burner::net::DnsMode::Doh,
                     "https://resolver.example/dns-query",
                     "Primary DoH")
    .AllowSystemDns(true) // explicit fallback, after DoH
    .WithResponseVerifier(VerifySignedResponse)
    .Build();

Hardened๋Š” ํ”ผ์–ด ๋ฐ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๊ฒ€์ฆ, ์Šคํƒ ๊ฒฉ๋ฆฌ, DoH ์šฐ์„  ๋ผ์šฐํŒ…, ์•ฑ ์‘๋‹ต ๊ฒ€์ฆ๊ธฐ ๋ฐ ์•ฑ ์†Œ์œ  ์‹ ๋ขฐ ๋งˆ์šดํŠธ๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์˜๊ตฌ์ ์ธ WithMtls(...) ์ž๊ฒฉ ์ฆ๋ช…์€ ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค. WithMtlsProvider(...)๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

ํ†ตํ•ฉ ๊ฒฝ๋กœ

1. Standard CMake

ํ•˜์œ„ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ด๋ฏธ CMake๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  ๊ฐ€์žฅ ๊น”๋”ํ•œ ์ข…์†์„ฑ ๊ด€๋ฆฌ ๊ฒฝ๋กœ๋ฅผ ์›ํ•  ๋•Œ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋ฌธ์„œ:

2. Visual Studio Source-Drop

ํ™˜๊ฒฝ์ด MSBuild ์šฐ์„ ์ด๊ฑฐ๋‚˜ BurnerNet์„ .vcxproj ๋‚ด๋ถ€์—์„œ ์ง์ ‘ ์ปดํŒŒ์ผํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋ฌธ์„œ:

3. Hardened Runtime Imports

๋ช…๋ฐฑํ•œ ๋Ÿฐํƒ€์ž„ ์ข…์†์„ฑ ๋…ธ์ถœ์„ ์ค„์ด๊ณ  ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ๋กœ๋”ฉ์„ ๋ช…์‹œ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์„ ๋•Œ ์‚ฌ์šฉํ•˜์„ธ์š”.

ํ™œ์„ฑํ™”:

  • BURNERNET_HARDEN_IMPORTS=1
  • Windows์—์„œ BurnerNet์˜ KernelResolver ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋” ๊ฐ€๋ฒผ์šด ์ž„ํฌํŠธ ๋Ÿฐํƒ€์ž„ ํ’‹ํ”„๋ฆฐํŠธ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ์กฐ:

Linux ์ง€์›: BurnerNet์€ Linux์—์„œ ์™„์ „ํ•œ ํฌ๋ Œ์‹ ํŒจ๋ฆฌํ‹ฐ(๋ฉ”๋ชจ๋ฆฌ ์ง€์šฐ๊ธฐ ๋ฐ ์Šคํƒ ๊ฒฉ๋ฆฌ)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ์ง€์นจ์€ docs/LINUX_USAGE.md๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์‚ฌ์šฉ ์ฐธ๊ณ  ์‚ฌํ•ญ

๊ถŒ์žฅ ๊ธฐ๋ณธ๊ฐ’:

  • ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ผํšŒ์šฉ ์ „์†ก์œผ๋กœ ์ทจ๊ธ‰
  • ๋†’์€ ์‹ ๋ขฐ์™€ ๋‚ฎ์€ ์‹ ๋ขฐ ํŠธ๋ž˜ํ”ฝ์„ ๋ณ„๋„์˜ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ถ„๋ฆฌ
  • mTLS ์ž๋ฃŒ, ๋ฒ ์–ด๋Ÿฌ ํ† ํฐ ๋ฐ ์‘๋‹ต ๊ฒ€์ฆ ๋น„๋ฐ€์—๋Š” ์ œ๊ณต์ž ์ฝœ๋ฐฑ ์‚ฌ์šฉ
  • ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™ ๋ฐ ์‹ ๋ขฐ ์•ต์ปค๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์œ ์ง€

์˜ˆ์ œ ๋ฐ ๋ฌธ์„œ

์˜ˆ์ œ:

๋ฌธ์„œ:

์š”๊ตฌ ์‚ฌํ•ญ

  • C++20
  • Windows x64/x86 ๋˜๋Š” Linux (GCC 13+ / Clang 15+)
  • libcurl 7.87.0+ ๋ฐ OpenSSL ํ—ค๋”
  • Linux ๊ฐ€์ด๋“œ: docs/LINUX_USAGE.md ์ฐธ์กฐ

๋ณด์•ˆ ํ˜„์‹ค ๋ฐ ํ™”์ดํŠธ๋ฐ•์Šค ๋ฐฉ์–ด

BurnerNet์€ ๊ณต๊ฒฉ ๋น„์šฉ์„ ์ „๋ฌธ๊ฐ€ ์ˆ˜์ค€์œผ๋กœ ๋†’์ด๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ๊ฐ•ํ™” ๊ณ„์ธต์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์Šคํ…”์Šค๋Š” ํ‘œ๋ฉด์ ์ด ์•„๋‹ˆ๋ผ ๊ตฌ์กฐ์ ์ด์–ด์•ผ ํ•œ๋‹ค๋Š” ์›์น™์— ๋”ฐ๋ผ ์šด์˜๋ฉ๋‹ˆ๋‹ค.

๊ณต๊ฒฉ์ž๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด BurnerNet์„ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

BurnerNet์˜ ์†Œ์Šค ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ง€์‹๋งŒ์œผ๋กœ๋Š” ๋ชจ๋“  ํ•˜์œ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋งˆ์Šคํ„ฐ ํ‚ค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. BurnerNet์€ Kerckhoffs์˜ ์›์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์•ฑ๋ณ„ ์‹ ๋ขฐ ์•ต์ปค(HMAC ๋น„๋ฐ€, ๊ณ ์ • ํ‚ค, UI ๋กœ์ง, ์ •์ฑ… ํ›„ํฌ)๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œ์œ ๋กœ ๋‚จ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ „์†ก ๊ณ„์ธต์„ ์•ˆ๋‹ค๊ณ  ํ•ด์„œ ํŠน์ • ๋ณด์•ˆ ํ๋ฆ„์„ ์ž๋™์œผ๋กœ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

  • ์ง€์—ฐ์œผ๋กœ์„œ์˜ ์Šคํ…”์Šค: ๊ฐ•ํ™”๋Š” ๊ณต๊ฒฉ์ž๋ฅผ ํ‘œ์ค€ ํŽธ์˜ ๋„๊ตฌ์—์„œ ๋ฒ—์–ด๋‚˜ ์ง€๋ฃจํ•œ ๋ช…๋ น์–ด ์ˆ˜์ค€ ๋ถ„์„์œผ๋กœ ์ด๋•๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋กœ์„œ์˜ ๋ฃจํŠธ: ๊ธฐ๋Šฅ์  ์˜์กด์„ฑ(์›์น™ 6)์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์ด ์„œ๋ฒ„ ์ œ๊ณต ๋ฐ์ดํ„ฐ ์—†์ด๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋„๋ก ํ•˜์„ธ์š”.
  • ์œ ๋ น ์ด์ : ๊ณต๊ฒฉ์ž๊ฐ€ ์š”์ฒญ ๋กœ์ง์„ ์ฐพ์„ ๋•Œ์ฏค์ด๋ฉด ์Šคํƒ ๊ฒฉ๋ฆฌ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์ง€์šฐ๊ธฐ๊ฐ€ ์ด๋ฏธ ํ•„์š”ํ•œ ํฌ๋ Œ์‹ ์ฆ๊ฑฐ๋ฅผ ํŒŒ๊ดดํ•ฉ๋‹ˆ๋‹ค.

์นดํ…Œ๊ณ ๋ฆฌ