미국 사이버국장실(ONCD)은 최근 '기본 구성 요소로 돌아가기: 안전하고 측정 가능한 소프트웨어를 향한 길'이라는 새로운 보고서를 발표했습니다. 이 보고서는 새로운 ONCD 국장인 해리 코커(Harry Coker)의 첫 번째 주요 발표 중 하나이며 메모리 안전 프로그래밍 언어 채택을 위한 강력한 주장을 펼칩니다.
이러한 새로운 초점은 사이버 보안의 책임을 재조정하고 장기적인 사이버 보안 투자에 맞춰 인센티브를 재편한다는 목표에서 비롯됩니다. 메모리 안전 프로그래밍 언어는 최근 새로운 보고서를 발표한 오픈소스 소프트웨어 보안 이니셔티브(OS3I)의 목표에도 포함되었습니다.
메모리 버그는 프로그래머가 메모리 액세스와 관련된 문제를 일으키는 코드를 작성할 때 발생합니다. 버퍼 오버플로우와 댕글링 포인터 때문에 흔히 버그가 발생합니다. Rust, Go, Java, Swift, Python 등 메모리 안전 프로그래밍 언어를 사용하면 언어에 메모리 또는 유형 안전과 같은 특정 속성이 포함되어 있으므로 개발자는 메모리 버그를 유발하는 코드를 만들 수 없습니다. 개발자가 C 및 C++와 같은 비메모리 안전 언어로 코드를 작성할 때 의도치 않게 메모리 액세스 오류를 일으킬 수 있는 코드를 작성할 수 있습니다. 메모리 안전 언어와 마찬가지로 컴파일 타임과 런타임 중에 오류를 포착하는 대신, 버그가 최종 버전에 포함되어 보안 문제를 일으킵니다.
사이버 보안은 위협에 대응하는 데 중점을 두는 경우가 많지만, 위험을 줄이는 것은 보안 문제를 일으킬 수 있는 코드 오류를 줄이는 관행을 만드는 것에서 시작됩니다. Google에 따르면 심각한 보안 버그 중 70% 가 실제로 메모리 안전 문제라고 합니다. C 및 C++와 같이 널리 사용되는 프로그래밍 언어는 특히 포인터 오류로 인해 많은 문제의 원인이 되는 경우가 잦습니다.
메모리 안전 언어를 사용하면 메모리 안전 취약성을 크게 줄이거나 완전히 제거할 수 있습니다. 결과적으로 최종 코드의 사이버 보안 위험이 줄어듭니다. 메모리 안전 언어는 보안을 향상할 뿐만 아니라, 충돌을 줄이고 개발자가 메모리 관리 문제에 집중할 필요가 없기 때문에 생산성을 높일 수 있습니다.
업계 뉴스레터
Think 뉴스레터를 통해 AI, 자동화, 데이터 등 가장 중요하고 흥미로운 업계 동향에 대한 최신 소식을 받아보세요. IBM 개인정보 보호정책을 참조하세요.
구독한 뉴스레터는 영어로 제공됩니다. 모든 뉴스레터에는 구독 취소 링크가 있습니다. 여기에서 구독을 관리하거나 취소할 수 있습니다. 자세한 정보는 IBM 개인정보 보호정책을 참조하세요.
메모리 버그를 줄이는 것은 다각적인 접근이 필요한 복잡한 문제입니다. 이 보고서는 조직이 메모리 안전 언어와 관련된 두 가지 특정 영역에 집중하도록 하는 데 중점을 둡니다. 또한 정부는 기술 커뮤니티, 특히 엔지니어 및 개발자와의 파트너십을 구축하여 이러한 중요한 변화를 이루기 위해 협력하는 데 집중하고자 합니다.
보고서와 함께 발표된 팩트 시트에 요약된 두 가지 주요 목표는 다음과 같습니다.
공격 영역이 작다는 것은 위험이 낮다는 것을 의미합니다. 취약점을 생성하는 코드 한 줄 한 줄이 공격 표면 영역을 상당히 확장합니다. 메모리 안전 오류를 유발하는 한 번의 실수로 인해 수많은 취약점이 발생할 수 있습니다. 이 보고서는 공격 표면을 줄이는 가장 효과적인 방법 중 하나로 메모리 안전 프로그래밍 언어 사용을 권장합니다. 이러한 언어에서는 프로그래머가 메모리 버그를 통해 공격 표면을 증가시키는 오류를 범할 수 없습니다.
끊임없이 변화하는 소프트웨어에 대한 지표를 사용하는 것이 매우 어렵기 때문에 많은 조직이 소프트웨어의 위험을 정확하게 평가할 수 없습니다. 소프트웨어 측정은 복잡한 과제이지만, 사후 대응 방식에서 사전 예방적 방식으로 전환하는 것으로 시작됩니다. 사이버 보안 품질을 위한 더 나은 진단을 개발함으로써 조직은 위험을 더욱 정확하게 식별하고 사전 예방적으로 해결할 수 있습니다.
조직에서 메모 안전 언어를 사용해야 한다고 말하기는 쉽지만, 실제로 이러한 전환은 복잡합니다. 많은 소프트웨어 프로그램과 라이브러리는 안전하지 않은 메모리 안전 언어를 기반으로 하며, 전체 코드베이스를 완전히 재작성하는 것은 불가능한 경우가 많습니다.
가능하면 메모리에 안전한 프로그래밍 언어로 새 프로젝트를 시작하는 것이 전환을 시작하는 가장 간단한 방법입니다. 또한 조직들은 전체 재작성 없이도 공격 표면을 줄일 수 있으며, 버퍼 오버플로와 댕글링 포인터와 같은 메모리 안전 버그 위험이 가장 높은 핵심 함수와 라이브러리만 재작성하면 됩니다. Rust 및 Swift와 같은 일부 메모리 안전 언어는 C 및 C++와 상호 운용 가능하므로 이러한 접근 방식이 가능합니다. 이 접근 방식을 취할 때 조직은 빌드 시스템을 통합하고 공유 객체 및 데이터를 위한 새로운 언어로 추상화를 구축해야 합니다.
그러나 이러한 전환을 수행하려면 적절한 개발자 리소스가 필요합니다. 조직은 현재 개발자 팀을 평가하여 팀이 현재 메모리 안전 언어 측면에서 어떤 전문 지식을 보유하고 있는지 파악하는 것부터 시작해야 합니다. 다음 단계는 현재 개발자들을 교육하는 것과 함께, 신규 개발자들이 메모리 안전 언어에 능숙해지도록 하는 것입니다.
사이버 보안에 대한 관심이 높아짐에 따라 많은 조직이 가장 중요한 단계는 사후 대응적인 접근 방식에서 사전 예방적인 접근 방식으로 전환하는 것임을 깨닫고 있습니다. 처음으로 돌아가 보안 코드를 만드는 데 집중함으로써 조직은 위험을 크게 줄일 수 있습니다. 간단하거나 빠른 과정은 아니지만, 이러한 전환을 통해 얻을 수 있는 이점은 의미 있고 장기적입니다.