Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

델파이는 메모리에 안전한 언어인가?


Recommended Posts

마르코 칸투 (Marco Cantu)"Is Delphi A Memory Safe Language?" 을 번역했습니다. (원문 작성: 2024년 3월, 최종 번역: 2024년 3월)

지난주 미국 정부는 “빌딩 블록으로 돌아가기: 안전하고 측정 가능한 소프트웨어로 향해 가는 길 (Back To The Building Blocks: A Path Toward Secure And Measurable Software)"이라는 보고서를 발표했다. 이 보고서는 미국의 사이버 보안 전략의 일환이며 여러 영역에 집중하고 있다. 그 중 하나는 메모리 안전의 취약성과 품질 지표이다. 

많은 온라인 잡지들이 이 보고서에 대해 논평을 했다. 거기에서는 C 및 C++ 프로그래밍 언어에 대한 상당한 반발을 강조했다. 

그 기사들 중 일부는 다음과 같다:

차례


미국 정부 보고서는 메모리 안전 언어에 관해 무슨 언급을 하고 있는가?

보고서는 "메모리 안전 취약성"에 관해 매우 많이 집중하고 있다. 그리고  "메모리 안전과 관련된 특성이 부족하고 중요한 시스템 전반에 걸쳐 급증하는 프로그래밍 언어들"을 골라낸다. 또한, "메모리 안전 프로그래밍 언어를 처음부터 사용할 것을 권장한다" 이는 CISA(사이버 보안 인프라 보안국)의 오픈 소스 소프트웨어 보안 로드맵이 제시하는 권장을 따르고 있다.

이 보고서가 참고하는 보고서는 NSA Cybersecurity Information Sheet on Software Memory Safety이다. 이 문서는 메모리 안전성이 무엇인지에 대해 매우 깊이있고 상세하게 설명한다. 예를 들면, 타입 안전성, 안전한 할당 및 할당 해제(가비지 컬렉터 사용에 대해서도) 등을 함께 설명한다. 이 단락의 핵심 내용은 다음과 같다:

메모리 안전 언어를 사용하면, 메모리 관련 문제들 중 일부를 프로그래머가 발생시키지 않도록 방지할 수 있다. 메모리는 자동으로 관리된다. 컴퓨터 언어의 부분으로서 관리되는 것이지, 프로그래머가 메모리 보호 코드 구현을 직접 추가하느냐에 의존하지 않는다. 언어는 자동 보호를 설정하며, 이를 위해 컴파일 시간과 런타임 검사의 조합을 사용한다. 이러한 언어 고유의 기능은 프로그래머가 의도치 않게 메모리 관리 실수를 저지르는 것을 사전에 차단한다. 메모리 안전 언어에는 Python®, Java®, C#, Go, Delphi/Object Pascal, Swift®, Ruby™, Rust®, Ada 등이 있다. 메모리 안전 언어를 사용한다고 해도, 메모리 관리가 곧 전체 메모리 안전인 것은 아니다. 

NSA 메모리 안전 언어 목록 안에 델파이(Delphi)가 들어 있는가?

그렇다, 델파이는 메모리 안전 언어로 등록되어 있다. 일부 처음 나온 기사들 안에는 안전 언어 목록의 언어들 중에서 가장 인기 있는 언어 중 일부만 뽑아서 제시되었었다. 그런 기사에서는 델파이가 빠져있는 경우가 있었다. 그런 목록들은 나중에 NSA 보고서와 일치하도록 정정되었다.

델파이 커뮤니티에서는 델파이 언어의 안전성에 대한 논의가 있었던 적이 있다. 메모리 안전성의 특성 중 하나인 가비지 컬렉션(garbage collection, 쓰레기 수집)이 없다는 점 때문이었다. 그러나, 공식적인 평가가 진행되었다. 다양한 근거들에 대해 기타 요소들까지 고려된 평가였다.

  • 안전한 프로그래밍 언어의 핵심 특징 중 하나는 엄격한 타입 시스템을 갖추고 있으며, 언어가 (런타임이 아니라) 컴파일 타임에 데이터 타입 매핑을 확인할 수 있도록 한다는 점이다. 동적 언어들은, 비록 가비지 컬렉터가 있다고 할지라도, 이런 측면에서 부족할 수 있으며, 런타임 오류에 노출될 수 있다. 그 경우, 안전에 영향을 줄 수 있다.
  • 또 다른 요소는, 일반적인 코드 안에서, 포인터 사용과 보다 직접적인 메모리 관리에 의존하지 않아야 한다는 점이다. 델파이는 직접 메모리 접근 사용을 차단하지 않는다. 하지만, 이처럼 메모리를 직접 접근하는 경우는 매우 드물다. 또한, 델파이는 메모리 관리를 자동화하고 단순화하는 메커니즘을 제공한다. GC(가비지 컬렉터)가 없는데도 말이다. 

메모리 안전 언어를 사용한다는 것은 내가 보안 위험으로부터 완전히 보호된다는 의미인가?

또 다른 일반적인 고려 사항은, 메모리 안전성은 목표로 제시되고 있는 것이지 절대적인 것은 아니라는 점이다. 예를 들어, 그 정부 보고서에서 강조하는 내용을 보면, 애플리케이션 유형들 중에는 실행 시점의 예측 가능성이 매우 중요한 것들이 있음을 강조한다(항공우주 산업 참조). 이런 상항에서는, 가비지 컬렉터가 (그 특성 상) 예측할 수 없는 시간에 시작될 수 있는데, 그로 인해, 프로그램 실행 중 중요한 시점에 실행되어야 하는 코드에게 영향을 미칠 수도 있다. 델파이는 다른 인기있는 언어들에 비해 이런 면에서 상당한 장점을 갖고 있다. 그래서 산업 자동화 분야에서 널리 사용된다. 델파이는 직접 제어를 허용한다. 하지만, C++에 비해 더 높고 더 간단한 수준으로 유지하고 있다.

델파이는 NSA와 미국 정부의 메모리 안전 언어에 등록되어 있다. - 그 밖에 어떤 것들을 권장하는가?

그 정부 보고서는 메모리 안전 언어로 전환할 것을 권장한다. 또한 정적 코드 분석을 위한 공식적인 방법을 사용하도록 강조한다.  특히 보안에 초점을 맞춘 분석을 권장한다. 우리는 이 분야에 대한 관심이 높아지고 있다는 것을 잘 알고 있으며, 이는 델파이에서도 마찬가지이다. 우리는 또한 이 분야에 도움이 되는 써드 파티(타사) 도구들을 강조해왔다.

또한 그 보고서에는 하드웨어 기반 또는 CPU 수준의 메모리 보안 적용에 초점을 맞춘 긴 섹션도 있다. 그 부분에서, 원본 NSA 보고서는 CFG(Control Flow Guard), ASLR(Address Space Layout Randomization), DEP(Data Execution Prevention) 등의 기능을 활용하는 것이 중요하다고 강조한다. 이러한 보안 설정들 중 일부는, 최근 버전의 델파이에서 시행되었으며, 이제는 아예 새 프로젝트를 만들면 기본값으로 적용된다.

공급망 보안(supply chain security)이란 무엇인가?

마지막으로, 보고서는 라이브러리 의존 체인의 보안에 대해서도 길게 서술하고 있다. 또한 가끔 "공급망 보안(supply chain security)"이라고 지칭하면서, (오픈 소스 라이브러리 등) 라이브러리 안전성을 평가하는 공식적인 방법을 사용하도록 권장한다. 많은 프로젝트들에서 의존성이 많이 증가함에 따라 보안 위험이 많아지고 있다는 우려가 커지고 있다. 프로젝트 코드 때문이 아니라, 사용되는 라이브러리들 때문이다. 이와 관련하여, 보고서에는 Log4j Java 라이브러리의 Log4Shell 취약점에 대해 자세한 설명하고 있다. 이 라이브러리 취약점은 메모리 안전 언어(예: Java)에게 영향을 미친다. 보고서에 따르면 "치명적인 약점이 있기 때문에, 악의적인 행위자가 전 세계 컴퓨터 시스템을 손상시킬 수도 있다 "는 사실을 알려준다. 보고서는 이어서 다음과 같이 언급했다. "이 취약점으로 인해 강조하고 싶은 바는, 오픈 소스 생태계의 보안을 보장하는 것을 도와 줄 필요성이 매우 중요하다는 점이다. 그러면, 전 세계적으로 엄청난 혁신을 촉진하게 된다"

보안 위험 관리를 돕기 위해 엠바카데로는 무엇을 하고 있는가?

소프트웨어 보안에 대한 우려는 모든 수준에서 분명하게 커지고 있다. 정부 기관부터 모든 규모의 기업체들에 이르기까지 말이다. 백악관과 NSA 보고서(델파이가 메모리 안전 언어로 등재되어 있음)가 발표되기 전부터, 엠바카데로는 이미 보안에 대한 우려가 고객들 사이에서 커지고 있음을 파악하고 있었다. 우리는 계속해서 최신 보안 기술에 대한 델파이 지원에 투자하는 데 집중해오고 있다. 그리고 과장되지 않고 명확한 교육을 통해, 실제 위험들과 사용 가능한 완화 방법들에 대해 지원하고 있다.

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.