메인 콘텐츠로 건너뛰기
블로그보안리노드 보안 다이제스트, 2022년 5월 9~15일

Linode Security Digest - 2022년 5월 9일~15일

리노드 시큐리티 다이제스트

이번 주에는 Rubygems와 Rsyslogs의 두 가지 심각도가 높은 취약점에 대해 다뤄보겠습니다. 또한 안전한 코딩 관행을 정의하는 것의 중요성에 대해서도 논의할 것입니다.

루비젬에서 승인되지 않은 보석 탈취

Rubygems는 루비 언어 생태계를 위한 소프트웨어를 제공하는 데 사용되는 패키지 레지스트리입니다. 양크 동작의 버그로 인해 RubyGems.org 사용자는 권한이 없는 사용자라도 특정 젬을 제거하고 교체할 수 있었습니다. 

보안에 취약하려면 보석이 필요합니다: 

  • 이름에 대시 하나 이상 포함 
  • 대시 앞에 이름이 있는 공격자가 제어하는 보석입니다. 
  • 30일 이내에 생성 또는 100일 이상 업데이트 없음

완화 

Bundler 팀에 따르면, 지속적 통합 및 배포 중에 -frozen 또는 -deployment 모드에서 Bundler를 사용하면 애플리케이션이 이 익스플로잇을 사용하여 생성된 버전으로 자동 전환되지 않도록 보장할 수 있습니다. 

애플리케이션 기록에서 과거 익스플로잇 가능성을 감사하려면 Gemfile.lock을 검토하고 버전 번호가 변경되지 않은 상태에서 플랫폼이 변경된 젬을 찾아보세요. 예를 들어, gemname-3.1.2가 gemname-3.1.2-java로 업데이트되면 이 취약점이 악용될 수 있음을 나타낼 수 있습니다. RubyGems.org는 패치가 적용되어 더 이상 이 문제에 취약하지 않습니다.

Rsyslog의 잠재적인 힙 기반 버퍼 오버플로

Rsyslog는 로그 처리를 위한 로켓처럼 빠른 시스템입니다. 옥텟 카운트 프레이밍을 사용할 때 TCP syslog 수신을 위한 일부 모듈에는 힙 버퍼 오버플로가 발생합니다. "옥텟 카운트" 프레이밍에서는 각 메시지 앞에 실제 메시지 길이가 접두사로 붙기 때문에 수신자는 메시지가 끝나는 위치를 정확히 알 수 있습니다. 공격자는 힙 값을 손상시켜 데이터 무결성 문제와 가용성 영향을 초래할 수 있습니다. 원격 코드 실행 가능성은 낮지만 불가능하지는 않습니다. 버전 8.2204.0 이하가 이 취약점의 영향을 받습니다.

완화

옥텟 카운트 프레이밍은 그다지 일반적이지 않습니다. 일반적으로 발신자에서 특별히 활성화해야 합니다. 사용자가 필요하지 않은 경우 가장 중요한 모듈에 대해 이 기능을 해제할 수 있습니다. 이렇게 하면 취약점이 완화됩니다. 이 방법은 모듈에 따라 다릅니다. 영향을 받는 모듈과 모듈별 구성 세부 사항은 여기를 참조하세요. 이 패치는 버전 8.2204.1에서 사용할 수 있습니다.

보안 코드 정의의 중요성

보안 코딩은 숙련된 개발자가 소프트웨어 개발 수명 주기(SDLC)의 시작부터 취약점이 없는 코드를 작성하는 관행입니다. 이 관행이 정의되어야만 개발자 커뮤니티가 그 목표를 향해 노력할 수 있습니다. 시큐어 코드 워리어는 2021년 12월 Evans Data Corp와 협력하여 전 세계 개발자 1,200명을 대상으로 보안 코딩 관행에 관한 기술, 인식 및 행동, SDLC에서의 영향 및 인식된 관련성을 파악하기 위해 개발자 주도 보안 현황 설문조사를 실시했습니다.

다음은 설문조사에서 강조된 몇 가지 사항입니다:

  • 1,200명의 현직 소프트웨어 개발자 중 14%만이 보안 코딩을 최우선 과제로 삼고 있습니다. 
  • 설문조사에 참여한 개발자의 37%는 마감 기한이 촉박해 취약점을 수정하거나 처음부터 제대로 코딩할 시간을 확보할 수 없어 알려진 취약점을 코드에 그대로 두었다고 답했습니다.
  • 또한 설문 응답자의 36%는 코드에서 취약점을 제거하고 싶지만 이를 위한 기술이나 지식이 없다고 답했습니다. 
  • 개발자가 안전한 코드를 작성하는 데 있어 많은 경우 문제가 되는 것은 그들이 일하는 조직이 안전한 코드를 작성하는 데 필요한 모범 사례를 파악하지 못했고 개발자가 이러한 목표를 달성할 수 있도록 교육하거나 지원하는 데 충분한 리소스를 투입하지 않았다는 점입니다. 

따라서 조직은 보안 코딩 관행에 대한 적절한 정의와 함께 개발자가 제대로 코딩할 수 있도록 충분한 시간을 제공하고 코드 취약점을 효율적으로 식별하고 수정하는 데 도움이 되는 실습 교육을 제공해야 합니다.
설문조사에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

내용

댓글 남기기

이메일 주소는 게시되지 않습니다. 필수 필드가 표시됩니다 *