Skip to main content

CodeQL ๋ถ„์„์„ ์œ„ํ•œ C ๋ฐ C++ ์ฟผ๋ฆฌ

default ๋˜๋Š” security-extended ์ฟผ๋ฆฌ ๋„๊ตฌ ๋ชจ์Œ์„ ์„ ํƒํ•  ๋•Œ CodeQL์—์„œ C ๋˜๋Š” C++๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

๋ˆ„๊ฐ€ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

CodeQL์€(๋Š”) ๋‹ค์Œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์œ ํ˜•์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • GitHub.com์˜ ํผ๋ธ”๋ฆญ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ, GitHub CodeQL ์‚ฌ์šฉ ์•ฝ๊ด€ ์ฐธ์กฐ
  • GitHub Code Security๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •๋œ GitHub Team์˜ ์กฐ์ง ์†Œ์œ  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ

CodeQL์—๋Š” C ๋ฐ C++ ์ฝ”๋“œ ๋ถ„์„์„ ์œ„ํ•œ ๋งŽ์€ ์ฟผ๋ฆฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. default ์ฟผ๋ฆฌ ๋„๊ตฌ ๋ชจ์Œ์˜ ๋ชจ๋“  ์ฟผ๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. security-extended ์ฟผ๋ฆฌ ๋„๊ตฌ ๋ชจ์Œ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ ํƒํ•˜๋ฉด ์ถ”๊ฐ€ ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ CodeQL ์ฟผ๋ฆฌ ๋„๊ตฌ ๋ชจ์Œ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

C ๋ฐ C++ ๋ถ„์„์„ ์œ„ํ•œ ๊ธฐ๋ณธ ์ œ๊ณต ์ฟผ๋ฆฌ

์ด ํ‘œ์—๋Š” CodeQL ์ž‘์—…๊ณผ CodeQL CLI์˜ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ๊ฐ€ ๋‚˜์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ CodeQL ์„ค๋ช…์„œ ์‚ฌ์ดํŠธ์—์„œ CodeQL ๋ณ€๊ฒฝ ๋กœ๊ทธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฟผ๋ฆฌ ์ด๋ฆ„๊ด€๋ จ CWE๊ธฐ๋ณธ๊ฐ’ํ™•์žฅCopilot Autofix
์ •์ˆ˜ ์ถ”๊ฐ€ ์˜ค๋ฒ„ํ”Œ๋กœ์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ๊ฒ€์‚ฌ190, 192
์ž˜๋ชป ๋ฐ”์ธ๋”ฉ๋œ ์“ฐ๊ธฐ120, 787, 805
memset ํ˜ธ์ถœ์ด ์‚ญ์ œ๋  ์ˆ˜ ์žˆ์Œ014
๋ฃจํ”„์—์„œ alloca ํ˜ธ์ถœ770
์„ ์–ธ๋œ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ณด๋‹ค ์ธ์ˆ˜๊ฐ€ ์ ์€ ํ•จ์ˆ˜ ํ˜ธ์ถœ234, 685
HRESULT์™€ ๋ถ€์šธ ํ˜•์‹ ๊ฐ„ ์บ์ŠคํŒ…253
char์—์„œ wchar_t๋กœ ์บ์ŠคํŒ…704
๊ต์ฐจ ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ…์— ์ทจ์•ฝํ•œ CGI ์Šคํฌ๋ฆฝํŠธ079
ํŒŒ์ผ์— ์ค‘์š”ํ•œ ์ •๋ณด์˜ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ์ €์žฅ260, 313
์ค‘์š”ํ•œ ์ •๋ณด์˜ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ์ „์†ก319, 359
๋ฃจํ”„ ์กฐ๊ฑด์—์„œ ์ข์€ ํ˜•์‹๊ณผ ๋„“์€ ํ˜•์‹ ๋น„๊ต190, 197, 835
'cin'์˜ ์œ„ํ—˜ํ•œ ์‚ฌ์šฉ676
์Šน์ธ๋˜์ง€ ์•Š์€ ์ œ์–ด ์˜์—ญ์— ์‹œ์Šคํ…œ ๋ฐ์ดํ„ฐ ๋…ธ์ถœ497
HTTPS URL ์‚ฌ์šฉ ์‹คํŒจ319, 345
O_CREAT ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ์ง€๋งŒ ๋ชจ๋“œ ์ธ์ˆ˜ ์—†์ด ์—ด๋ฆฐ ํŒŒ์ผ732
'scanf'์™€ ์œ ์‚ฌํ•œ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ๋ฐ˜ํ™˜ ๊ฐ’ ๊ฒ€์‚ฌ253
๋งŒ๋ฃŒ๋œ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ๋ฐ˜๋ณต๊ธฐ416, 664
์“ฐ๊ธฐ ์˜ค๋ฒ„๋Ÿฐ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ120, 787, 805
new/free ๋˜๋Š” malloc/delete ๋ถˆ์ผ์น˜401
๊ณฑํ•˜๊ธฐ ๊ฒฐ๊ณผ๊ฐ€ ํฐ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜๋จ190, 192, 197, 681
0 ์ข…๊ฒฐ์ž์— ๋Œ€ํ•œ ๊ณต๋ฐฑ ์—†์Œ131, 120, 122
ํฌ์ธํ„ฐ ์˜ค๋ฒ„ํ”Œ๋กœ ๊ฒ€์‚ฌ758
์ž ์žฌ์  ๋‘ ๋ฒˆ ํ•ด์ œ415
์ž ์žฌ์  ํ•ด์ œ ํ›„ ์‚ฌ์šฉ416
snprintf ํ˜ธ์ถœ ์˜ค๋ฒ„ํ”Œ๋กœ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ190, 253
์ž ์žฌ์ ์œผ๋กœ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ strncat ํ˜ธ์ถœ788, 676, 119, 251
์ด์ „ ์—ญ์ฐธ์กฐ๋กœ ์ธํ•œ ์ค‘๋ณต null ๊ฒ€์‚ฌ476
์Šคํƒ ํ• ๋‹น ๋ฉ”๋ชจ๋ฆฌ ๋ฐ˜ํ™˜825
SECURITY_DESCRIPTOR์—์„œ DACL์„ NULL๋กœ ์„ค์ •732
์„œ๋ช…๋œ ์˜ค๋ฒ„ํ”Œ๋กœ ๊ฒ€์‚ฌ128, 190
์ •์  ๋ฐฐ์—ด ์•ก์„ธ์Šค๋กœ ์ธํ•ด ์˜ค๋ฒ„ํ”Œ๋กœ ๋ฐœ์ƒ ๊ฐ€๋Šฅ119, 131
sizeof๋ฅผ ์‚ฌ์šฉํ•œ ์˜์‹ฌ์Šค๋Ÿฌ์šด ์ถ”๊ฐ€468
๊ฒ€์‚ฌ ์‹œ๊ฐ„ ์‚ฌ์šฉ ์‹œ๊ฐ„ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒฝํ•ฉ ์ƒํƒœ367
์„œ์‹ ํ•จ์ˆ˜์— ์ธ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ์ ์Œ234, 685
์‚ฐ์ˆ  ์‹์˜ ์ œ์–ด๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ190, 191
SQL ์ฟผ๋ฆฌ์˜ ์ œ์–ด๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ089
OS ๋ช…๋ น์— ์ œ์–ด๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ๋จ078, 088
์ œ์–ด๋˜์ง€ ์•Š์€ ํ˜•์‹ ๋ฌธ์ž์—ด134
์ƒ์„ฑ์ž์— ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์‚ฌ์šฉ670
0๊ณผ ๋น„๊ตํ•œ ๋ถ€ํ˜ธ ์—†๋Š” ์ฐจ์ด ์‹191
ํฌ์ธํ„ฐ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์— ์—…์บ์ŠคํŠธ ๋ฐฐ์—ด ์‚ฌ์šฉ๋จ119, 843
์†์ƒ๋˜์—ˆ๊ฑฐ๋‚˜ ์œ„ํ—˜ํ•œ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ327
ํ‚ค ํฌ๊ธฐ๊ฐ€ ๋ถ€์กฑํ•œ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ326
Heartbleed์™€ ํ•จ๊ป˜ OpenSSL ๋ฒ„์ „ ์‚ฌ์šฉ327, 788
์œ„ํ—˜ํ•œ ํ•จ์ˆ˜ ์‚ฌ์šฉ242, 676
๋งŒ๋ฃŒ๋œ ์Šคํƒ ์ฃผ์†Œ ์‚ฌ์šฉ825
์ˆ˜๋ช… ์ข…๋ฃŒ ํ›„ ๋ฌธ์ž์—ด ์‚ฌ์šฉ416, 664
์ˆ˜๋ช…์ด ์ข…๋ฃŒ๋œ ํ›„ ๊ณ ์œ  ํฌ์ธํ„ฐ ์‚ฌ์šฉ416, 664
์„œ์‹ ํ•จ์ˆ˜์— ์ž˜๋ชป๋œ ํ˜•์‹์˜ ์ธ์ˆ˜686
XML ์™ธ๋ถ€ ์—”ํ„ฐํ‹ฐ ํ™•์žฅ611
๋ฒ”์œ„ ํ™•์ธ ์ „์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐฐ์—ด ์˜คํ”„์…‹120, 125
์Šคํ‘ธํ•‘์„ ํ†ตํ•œ ์ธ์ฆ ์šฐํšŒ290
boost::asio TLS ์„ค์ • ์ž˜๋ชป๋œ ๊ตฌ์„ฑ326
boost::asio์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ•˜๋“œ ์ฝ”๋”ฉ๋œ ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉ327
๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค ํ•จ์ˆ˜์— ๋Œ€ํ•œ ํ˜ธ์ถœ์€ ๋ฒ„ํผ๋ฅผ ์˜ค๋ฒ„ํ”Œ๋กœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.119, 121, 122, 126
์ธ์ฆ์„œ ๊ฒ€์‚ฌ ์•ˆ ๋จ295
์ธ์ฆ์„œ ๊ฒฐ๊ณผ ๋ณ‘ํ•ฉ295
SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ค‘์š”ํ•œ ์ •๋ณด์˜ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ์ €์žฅ313
๋ฒ„ํผ์— ์ค‘์š”ํ•œ ์ •๋ณด์˜ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ์ €์žฅ312
์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ๋Š” ๋“ค์—ฌ์“ฐ๊ธฐ ์•ž์˜ ์‰ผํ‘œ1078, 670
๊ถŒํ•œ ์ œํ•œ ์—†์ด ์ƒ์„ฑ๋œ ํŒŒ์ผ732
์ž˜๋ชป๋œ 'not' ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ480
์ž˜๋ชป๋œ ํ• ๋‹น ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ570, 252, 755
์ž˜๋ชป๋œ ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ119, 125, 193, 787
'scanf'์™€ ์œ ์‚ฌํ•œ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๋ฐ˜ํ™˜ ๊ฐ’ ๊ฒ€์‚ฌ ๋ˆ„๋ฝ252, 253
๋น„์ƒ์ˆ˜ ํ˜•์‹ ๋ฌธ์ž์—ด134
ํฌ์ธํ„ฐ ํ˜•์‹์˜ ๋ฐฐ์—ด์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ131, 122
ํฌ์ธํ„ฐ ํ˜•์‹์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ131, 122
CreateProcess ํ˜ธ์ถœ ์‹œ ๋”ฐ์˜ดํ‘œ๊ฐ€ ์—†๋Š” ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋Š” NULL ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ด๋ฆ„428
์“ฐ๊ธฐ ์˜ค๋ฒ„๋Ÿฐ119, 131
๋ฌธ์ž์—ด ๋ณต์‚ฌ์—์„œ ๋ฒ„ํผ ํฌ๊ธฐ๊ฐ€ ์ž˜๋ชป๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Œ676, 119, 251
์Šน์ธ๋˜์ง€ ์•Š์€ ์ œ์–ด ์˜์—ญ์— ์ค‘์š”ํ•œ ์‹œ์Šคํ…œ ๋ฐ์ดํ„ฐ ๋…ธ์ถœ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ497
์“ฐ๊ธฐ ์˜ค๋ฒ„๋Ÿฐ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ120, 787, 805
๋ถ€๋™์—์„œ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ ์‹œ ์“ฐ๊ธฐ ์˜ค๋ฒ„๋Ÿฐ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ120, 787, 805
์ž ์žฌ์ ์œผ๋กœ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ์ง€์—ญ ๋ณ€์ˆ˜665, 457
์ž ์žฌ์ ์œผ๋กœ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ strcat ์‚ฌ์šฉ676, 120, 251
์˜์‹ฌ์Šค๋Ÿฌ์šด 'sizeof' ์‚ฌ์šฉ467
์˜์‹ฌ์Šค๋Ÿฌ์šด ํฌ์ธํ„ฐ ํฌ๊ธฐ ์กฐ์ •468
void๋กœ ์˜์‹ฌ์Šค๋Ÿฌ์šด ํฌ์ธํ„ฐ ํฌ๊ธฐ ์กฐ์ •468
ํ˜•์‹ ํ˜ผ๋™8:43
์ œํ•œ ์—†๋Š” ์“ฐ๊ธฐ120, 787, 805
์ œ์–ด๋˜์ง€ ์•Š์€ ํ• ๋‹น ํฌ๊ธฐ190, 789
๊ฒฝ๋กœ ์‹์— ์ œ์–ด๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ๋จ022, 023, 036, 073
์ œ์–ด๋˜์ง€ ์•Š์€ ์ฒ˜๋ฆฌ ์ž‘์—…114
์ข…๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฐ€๋ณ€ ์ธ์ž ํ˜ธ์ถœ121
์กฐ๊ฑด์— ๋Œ€ํ•œ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ž…๋ ฅ807
์ž ์žฌ์ ์œผ๋กœ ์œ„ํ—˜ํ•œ ํ•จ์ˆ˜ ์‚ฌ์šฉ676