저는 스스로 고생을 자처하는 타입인 것 같습니다. 제 첫 프로그래밍 언어가 IBM 360 어셈블리어였고, 두 번째 언어가 C였기 때문입니다. 이 언어들로 프로그래밍하는 것은 쉽지 않았고, 안전하게 코딩하는 것은 더 어려웠습니다.
따라서 미국 사이버보안 및 인프라 보안국(CISA)과 연방수사국(FBI)이 소프트웨어 제조업체들에게 C와 C++ 같은 '메모리 비안전' 프로그래밍 언어의 사용 중단을 강력히 권고한 것은 그리 놀랍지 않습니다.
C와 C++의 은퇴 시기가 다가왔을까요? Rust로 전환할 때가 된 걸까요?
Product Security Bad Practices 보고서는 소프트웨어 제조업체들에게 중요한 인프라나 국가 주요 기능(NCF)에 사용될 새로운 제품을 메모리 비안전 언어(C나 C++ 등)로 개발하지 말라고 경고합니다. 대신 메모리 안전 언어로 작성해야 하며, 그렇지 않을 경우 국가 안보, 경제 안보, 공공 보건 및 안전에 상당한 위험을 초래할 수 있다고 합니다.
이러한 권고는 새로운 것이 아닙니다. CISA는 수년간 이 주장을 지속해 왔습니다. 2024년 초, CISA와 FBI, 호주 사이버보안센터(Australian Signals Directorate), 캐나다 사이버보안센터 등 파이브 아이즈(정보동맹)의 파트너 기관들은 Exploring Memory Safety in Critical Open Source Projects라는 보고서를 발표하여 172개의 주요 오픈소스 프로젝트를 분석했습니다. 그 결과, 이들 프로젝트의 절반 이상이 메모리 비안전 언어로 작성된 코드로 이루어져 있었습니다.
메모리 비안전 언어는 개발자가 메모리 사용과 할당을 직접 관리해야 하며, 실수로 인해 메모리 안전 취약점(예: 버퍼 오버플로, 사용 후 해제된 메모리 사용)이 발생할 수 있습니다. 이러한 취약점이 악용되면 소프트웨어, 시스템, 데이터에 대한 통제가 악의적인 행위자에게 넘어갈 수 있습니다.
CISA는 메모리 안전 취약점이 전체 보안 취약점의 70%를 차지한다고 밝혔습니다. 이 문제를 해결하기 위해, CISA는 개발자들이 Rust, Java, C#, Go, Python, Swift 같은 메모리 안전 프로그래밍 언어로 전환할 것을 권장합니다. 이러한 언어들은 메모리 관련 오류에 대한 기본 보호 기능을 제공하여 코드 자체를 더 안전하게 만듭니다.
이론적으로는 좋은 제안입니다.
하지만 C에서 Rust로 코드를 손쉽게 전환할 수 있는 일이라면 좋겠지만, 현실은 그렇지 않습니다.
예를 들어, 리누스 토발즈의 지지를 받고 있음에도 불구하고 Rust의 Linux 도입 속도는 매우 더딥니다. 토발즈는 2024년 유럽 오픈소스 서밋에서 “Rust 대 C의 논의는 거의 종교적인 양상을 띠고 있다”라고 언급하며, 한 Rust in Linux 관리자가 이 논의에 염증을 느껴 프로젝트를 포기하기도 했다고 설명했습니다. C를 오랜 시간 동안 숙달해 온 사람들은 Rust를 다시 배워야 하는 의미를 느끼지 못하며, 본인들은 이미 C로 메모리 안전 코드를 작성할 수 있다고 주장합니다.
실제로 기존의 대규모 코드베이스를 메모리 안전 언어로 전환하는 것은 방대한 작업입니다. 시간과 자원이 많이 들며, 기능을 유지하기 위해 신중한 계획이 필요합니다. 또한, 메모리 안전 언어는 C나 C++에 비해 성능이 떨어질 가능성이 있습니다. 속도와 보안 중 선택해야 할 경우, 개발자와 기업은 속도를 우선할 가능성이 높습니다.
뿐만 아니라, 전환 비용은 새로운 언어를 지원하는 개발 도구, 디버거, 테스트 프레임워크 교체 비용까지 포함됩니다. 이후 기존 코드 및 라이브러리와의 통합 작업도 필요합니다.
CISA는 이 전환을 요구하고 있으며, 최소한 기업들이 2026년 1월 1일까지 기존 코드베이스 전환 로드맵을 마련할 것을 권고하고 있습니다. CISA는 초기 투자 비용을 감안하더라도 장기적으로 취약성 감소 및 보안 개선에 도움이 될 것이라고 주장합니다.
그러나 현대 기업들은 단기 이익을 극대화하는 데 집중하기 때문에 2027년에 비용 절감 효과가 있을지라도 당장은 돈을 쓰지 않을 가능성이 큽니다.
결국, 고통스럽고 느리겠지만 메모리 안전 언어로의 전환은 언젠가 이루어질 것입니다. 이는 확실히 좋은 방향이지만, 2020년대가 아닌 2030년대에나 실현될 가능성이 높습니다. 현재의 기업이나 개발자들은 이러한 전환을 위한 충분한 이유를 느끼지 못하고 있습니다. CISA의 바람과는 다르게 현실은 그리 간단하지 않습니다.
지금 사용되는 주요 소프트웨어 중에 코어는 c, c++로 안 만든게 없는데 c,.c++ 코드가 뚝딱하고 rust로 바뀌는 것도 아니고
Fed의 스탠스는 c/c++를 쓰지 말라는 거지, 딱히 rust를 쓰라는 건 아니긴 합니다. "대안"은 계속 나오고 있죠. rust가 제일 유명한 건 맞지만 zig도 유명세를 얻고 있고 구글의 carbon도 있죠. 레딧에서도 우려하는 여러 글을 보긴 했는데 저는 이게 강제까지 될 거라고 생각하진 않네요. 권고로도 충분하기도 하고 또 강제는 현실성이 없기도 하고요. 하지만 종종 나오는 이야기 중에 negligence ( 부작위) 에 관한 문제가 될 것 같다는 내용은 신빙성이 있다고 생각합니다. 결국에는 회사가 책임을 가지고 업무환경을 개선해야 합니다. 자칫하면 사고날 수 있는 환경에서 아무런 안전 장치 없이 실무자들에게 떠넘기고는, 사고가 나면 너의 스킬 이슈, 너가 무능력해서야 우린 책임 없어 해버리면 곤란하다는 거죠.
댓글들을 보니 관점의 차이가 좀 있군요. 현재 미국이 흘러가는 상황을 보면 사이버 보안에 대해 굉장히 심각한 우려를 표하고 있습니다. 이는 해킹을 받았는지조차 판단하지 못하는 국내의 수준으로는 이해할수없는 부분이며, 국내를 떠나 전 세계 개발자들도 좋아하지않을 상황임은 분명합니다. 미국이야 잃을 것이 많은... 거의 모든 분야에서 최상위에 군림하는 존재이기 때문에 저런것이지만 다른 나라는 저 룰을 안지킬 가능성이 크죠. 아마도 유럽이 뒤를 따라갈것이며 한국은 따라가는 척만 할 가능성이 높습니다. 하고싶은말은, 어차피 미국도 고객으로 보고있다면 반발보다는 시간이 있을 때 한국 개발자들도 슬슬 준비하는게 좋을것 같다는 의견입니다.
결국 AI가 전환작업을 하는 시대가 올 것 같네요.
그래도 점진적으로 대체하는 중이긴 함
지금 사용되는 주요 소프트웨어 중에 코어는 c, c++로 안 만든게 없는데 c,.c++ 코드가 뚝딱하고 rust로 바뀌는 것도 아니고
anotherA
그래도 점진적으로 대체하는 중이긴 함
결국 AI가 전환작업을 하는 시대가 올 것 같네요.
저걸 알지만 못하는건 돈과 시간때문이죠 한국도 아직 쓰고 있는곳들은 몰라서 못버리는게 아니라 버릴수 없으니 쓰고있습니다 언젠가 전환해야하는거는 알지만 뭐 현실은 그렇지 않다는거죠 턱시도도 아직 쓰니까요
루리웹-2898369589
메모리 관점 보안 측면에서는 모르겠는대 임베디드나 메모리 동적 할당 없는쪽은 러스트 메트리가...
그러면 윈도우부터 버려야돼 빡대갈들...
윈도우 커널은 이미 러스트로 넘어간 지 오래임
저번달에 나온 24h2에나 적용됬고 그마저도 일부 적용입니다.
윈도우는 이미 C++ 코드를 버리는 중임.
Fed의 스탠스는 c/c++를 쓰지 말라는 거지, 딱히 rust를 쓰라는 건 아니긴 합니다. "대안"은 계속 나오고 있죠. rust가 제일 유명한 건 맞지만 zig도 유명세를 얻고 있고 구글의 carbon도 있죠. 레딧에서도 우려하는 여러 글을 보긴 했는데 저는 이게 강제까지 될 거라고 생각하진 않네요. 권고로도 충분하기도 하고 또 강제는 현실성이 없기도 하고요. 하지만 종종 나오는 이야기 중에 negligence ( 부작위) 에 관한 문제가 될 것 같다는 내용은 신빙성이 있다고 생각합니다. 결국에는 회사가 책임을 가지고 업무환경을 개선해야 합니다. 자칫하면 사고날 수 있는 환경에서 아무런 안전 장치 없이 실무자들에게 떠넘기고는, 사고가 나면 너의 스킬 이슈, 너가 무능력해서야 우린 책임 없어 해버리면 곤란하다는 거죠.
Zig 는 아직 프로덕션에 넣을정도는 아니라고 생각합니다. Rust 는 이미 볼보등 자동차나나 리눅스 커널 안드로이드 커널에 들어가고 있죠
사람이 문제지 프로그래밍 언어가 문제가 아닌데.
java 하는데 GC 지랄맞은거보면 글쎄다
C, ASM 빼면 속도 감당 가능하겠니?
댓글들을 보니 관점의 차이가 좀 있군요. 현재 미국이 흘러가는 상황을 보면 사이버 보안에 대해 굉장히 심각한 우려를 표하고 있습니다. 이는 해킹을 받았는지조차 판단하지 못하는 국내의 수준으로는 이해할수없는 부분이며, 국내를 떠나 전 세계 개발자들도 좋아하지않을 상황임은 분명합니다. 미국이야 잃을 것이 많은... 거의 모든 분야에서 최상위에 군림하는 존재이기 때문에 저런것이지만 다른 나라는 저 룰을 안지킬 가능성이 크죠. 아마도 유럽이 뒤를 따라갈것이며 한국은 따라가는 척만 할 가능성이 높습니다. 하고싶은말은, 어차피 미국도 고객으로 보고있다면 반발보다는 시간이 있을 때 한국 개발자들도 슬슬 준비하는게 좋을것 같다는 의견입니다.
원래 os 만들려고 만든 언어가 c이고 os의 기능중 하나인 메모리 관리를 위해서는 메모리 제어 기능도 필요하다.
이게 뭔 개소리지??? 요리사에게 칼질하기 힘드니 채칼쓰고 칼질몰라도 됩니다 하는거 하고 똑같은 소리인데
한번의 사소한 실수가 중대한 보안사고로 이어질 수 있으니 그런 가능성을 없애는게 더 낫다는 판단이겠죠
이 기사를 개소리로 치부할 정도면 아예 이쪽 분야에 관심이 없으신거 같은데요.. 당장 Rust나 C++ 20/23만해도 이러한 메모리 불안정성을 커버하려고 하는 모든 시도의 일환이니까요.
저 사람 뿐만이 아닙니다. 댓글들 보면 보안에 대해 별 관심이 없는 사람들이 대단히 많다는 걸 알 수 있죠. 해킹이든 랜섬이든 털려보기 전까지는 모릅니다. 그게 자기집 컴퓨터가 아니라 자기 직장이라면 더 즐겁겠지요.
근데 기업 입장에서는 쌓여있는걸 다 저걸로 바꾸기에는 너무 큰일이라서 아무리 저리 말해도 사고나기전에는 잘 안바꾸긴 할거같은데
개인적인 생각은 당장은 안 달라지겠지만 점차적으로 다른 언어로 교체 된다고 생각함
기업 입장에서는 지금 인원 갈아서 데드라인만 지키면서 유지하며 간보다 ai체제로 넘어갈 것 같은데... 그게 더 싸니까... 그리고 사고나면 ai한테 떠넘기면 되잖?!!
Rust가 만능은 아닌게... Rust에서도 메모리 제어가 가능하잖아. 그러니 굳이 C 개발자가 Rust 배울 이유가 없지. 단지 어렵게 만들려면 외부 툴들 쓰면됨.
위엔 러스트가 만능이 아니라느니 안전하지 않다느니 하는데, 다들 미국 정부보다 유능해서 그런 말들을 하는 거임? 그런 걸 보고 근거없는 자신감이라고 하던가? 다른 어디도 아니고, 미국 국가 차원에서 C 및 C++은 불안해서 제발 갈아치우라고 하는 상황인데 미국 정부보다 다들 똑똑하신가봐? 하긴 난데없이 그동안 밥벌어먹고 살던 수단을 바꾸라는데, 새로운 언어 배우기는 싫겠지. 우리나라? 기대도 안 해. 허구한 날 북한한테 털렸느니 어쩌느니 하는 것도 프로그래머들의 게으름이라고 생각하는데 그래도 된다면 뭐 어쩌겠어.
이건 내 짧은 생각인데 이 흐름을 가속화시킬 방법이 있긴 있다. 보안 관련으로 털렸을 경우, 무자비한 징벌적 손해배상을 먹이는 방법이지. '북한 해킹그룹이 어쩌네 중국이나 러시아가 어쩌네 하는 헛소리 집어치우고 사전에 대비 안한 니네 기업 잘못이니 싹 다 물어내라'하면 알아서들 바꾸려고 용쓸 거다.
그렇게나 잘 아시면 댓글들마다 어떤 점이 틀렸는지 반박해서 설명해주시면 어떨까요 그건 본인도 게을러서 못 하나 보지요? 이런 댓글로 다른 사람들 비꼬아봤자 찬성하는 사람 없고 반말만 늘어납니다
저한테 더 좋은 생각이 있는데, 미국 정부와 러스트 관계자가 새로운 언어로 전환할 때 필요한 비용을 대신 내주는 건 어떨까요? 보안 관련으로 털리면 정부와 관계자가 대신 책임지게 하세요. 그러면 다들 좋구나 하면서 알아서들 바꾸겠지요
왜 러스트든 스위프트든 메모리 안전 언어를 써야 하는지 그 이유는 검색 한방에 숱하게 나옵니다. 그런 좋은 세상에, 내가 왜 들을 생각도 없는 사람들한테젖먹이들 밥먹여주듯 일일이 떠먹여줘야 합니까? 설득이요? 귀찮습니다. 님들이 언어 전환을 귀찮아하는 것만큼 말입니다. 여기 대단하신 개발자가 얼마나 있는지는 몰라도, 저는 그 NSA를 비롯한 미국 정부보다 똑똑하지 않으므로 미국 정부의 권고안(언젠가 강제가 될지도 모르죠)을 존중합니다. 우리나라도 그 길을 빨리 따랐으면 합니다. 찬성? 불평? 소비자로서 솔직히 알 바 아닙니다. 보안상 안전하면 장땡이고, 털리면 맹비난할 뿐입니다.
java든 c# 운영체제가 하나가 점유율 40% 넘으면 알아서 다들 c랑 c++안씀. 윈도우 리눅스가 c기반 레거시니까 쓰는건데.