블로그

블록체인, 분산 프로토콜 및 애플리케이션에서 DevSecOps의 중요성

케빈 존스 썸네일
케빈 존스
2022년 10월 27일 게시

보안은 언제나 정보 기술의 가장 중요한 측면 중 하나였으며, 오늘날 많은 조직과 개발자는 애플리케이션을 구축할 때 보안을 우선시하는 사고방식을 채택하고 있습니다. 이러한 원칙과 조치는 종종 'DevSecOps'로 통칭되며, 이는 애플리케이션 보안의 전체 문화와 접근 방식을 포괄합니다. DevSecOps는 개발, 보안, 운영을 의미합니다. 이 정책의 목표는 정보 기술과 인프라의 모든 측면에 보안을 최우선으로 하는 사고방식을 도입하는 것입니다.

정보 기술 분야에서 가장 최근이고 가장 흥미로운 분야 중 하나는 블록체인입니다. 블록체인은 분산형 프로토콜과 애플리케이션으로 구성된 거대한 생태계를 갖추고 있으며, 이를 통해 많은 사람이 Web3라고 부르는 업데이트된 버전의 웹으로 우리를 인도하는 것을 목표로 합니다.

Web3는 무엇이고 분산형 애플리케이션은 정확히 무엇인가요?

Web3라는 용어는 애플리케이션 아키텍처와 사용자 경험 측면에 초점을 맞춘 다양한 개념을 포괄합니다.

  • 분산
  • 개방 상태
  • 불변성
  • 프로그래밍 가능성
  • 투명성

이러한 핵심 개념의 목표는 공개 키 암호화를 사용하여 사용자에게 신원에 대한 제어권을 돌려주고 다양한 블록체인 메커니즘과 프로토콜을 통해 P2P 경제의 채택을 확대하는 것입니다. 많은 블록체인과 이를 둘러싼 프로토콜은 격리된 가상화된 환경 내에서 실행되는 스마트 계약을 사용하여 고급 거래를 처리하고 상태를 관리할 수 있습니다.

이후 이는 합의 알고리즘이라는 메커니즘을 통해 네트워크의 모든 노드에서 동기화됩니다. 이는 사용자나 노드가 분산 환경에서 협력하여 일부 에이전트가 실패하더라도 시스템의 모든 노드가 단일 진실 출처에 동의할 수 있도록 하는 메커니즘입니다. 또한, 많은 블록체인은 프로토콜을 개방적이고 허가 없이 유지하여 검열 방지 방식으로 작동합니다.

풍경은 어떤가요?

블록체인 기반 아키텍처에는 추가적인 위험이 있습니다. 왜냐하면 네트워크의 백본은 일반적으로 디지털 토큰 기반 암호화폐로 구동되고 일반적으로 금전적 가치를 지니기 때문입니다. 이러한 토큰은 일반적으로 외부 소유 계정이나 스마트 계약에 저장된 주소에 보관됩니다. 그리고 공개 키 암호화를 사용하면 신뢰도 분산되므로 네트워크의 각 주소는 공격을 받기 쉽습니다.

각 계좌의 잔액은 공공원장이라 불리는 네트워크 전반에 분산되어 누구나 볼 수 있는데, 이를 통해 해커가 특정 사용자나 계약을 표적으로 삼을 수 있는 가능성이 생깁니다. 이로 인해 블록체인에 있어 개인정보 보호와 익명성이 특히 중요한 측면이 됩니다. 종종 이러한 계정을 관리하는 인간은 공격 대상이 되거나 자신의 지위를 통해 불법적인 행동을 할 수 있으며, 다음과 같은 위협이 있습니다.

  • 사회공학
  • 제대로 관리되지 않은 신뢰 또는 키
  • 횡령 및 사기
  • 사기

또한, 다양한 블록체인 기술, 프로토콜, 분산형 애플리케이션의 기술적 영향력은 이미 크고 빠르게 성장하고 있습니다. 그러므로 이 빠르게 성장하는 생태계가 보안에 미치는 영향에 대해 생각하는 것이 중요합니다. 분산화라는 핵심 개념을 기반으로 구축된 모든 것은 확장성이 높고 따라서 주의 깊게 분석하고 보호해야 할 공격 지점도 더 많습니다.

분산형 애플리케이션과 기술 인프라의 보안을 감사할 때 고려할 가치가 있는 몇 가지 주제는 다음과 같습니다.

  • 1계층 블록체인(비트코인과 이더리움)
  • 2계층 블록체인(사이드체인 및 롤업)
  • 스마트 계약
  • 컴파일러
  • 소프트웨어 지갑
  • 하드웨어 지갑
  • 블록체인 클라이언트(광부 및 검증자)
  • 보관 거래소(중앙화)
  • DeFi 거래소(탈중앙화)
  • 제공자
  • 마켓플레이스(NFT)

스마트 계약의 일반적인 공격 벡터

애플리케이션 개발 라이프사이클에서 DevSecOps에 대해 이야기할 때 일반적으로 보안 중심 개발을 지칭합니다. 이는 일반적으로 보안을 왼쪽으로 이동시키는 행위로 알려져 있습니다. 이는 DevSecOps 문화의 가장 중요한 측면 중 하나인데, 개발자가 보안을 코드로 생각하는 것에서 시작하기 때문입니다. 블록체인 기반 스마트 계약은 가치를 저장하고 은행 역할을 할 수 있으므로, 계약 내의 코드는 공격에 매우 취약하며, 엄격한 보안을 염두에 두고 작성해야 합니다.

업계에서는 스마트 계약의 취약점을 노린 해킹 사건이 여러 건 발생했으며, 주로 코드 악용에 초점을 맞췄습니다. 역사상 가장 큰 해킹 사건 중 하나는 작년에 발생했는데, 크로스체인 프로토콜인 Poly Network가 공격자가 스마트 계약을 해킹하여 해커가 제어하는 외부 지갑 주소로 다양한 자산을 이동하여 6억 1,000만 달러 상당을 이체했다고 보고했습니다.

스마트 계약 개발에는 많은 취약점이 있지만 가장 빈번한 공격은 다음과 같습니다.

  • 언더플로 및 오버플로 - 일반적으로 산술 연산으로 인해 부호 없는 정수가 최대 바이트 크기에 도달하여 값이 '래핑'되어 애플리케이션의 비즈니스 로직에서 예기치 않은 동작이 발생할 수 있습니다.
  • 계약 재진입 - 계약을 반복적으로 재진입하여 악용하는 행위로, 공격자는 일반적으로 허용된 금액보다 많은 자금을 인출합니다.
  • 거래 선행 실행 - 이는 누군가가 기술이나 시장 이점을 활용하여 다가올 거래에 대한 사전 지식을 얻는 과정을 말합니다.
  • 제대로 관리되지 않은 비밀.
  • 접근 제어가 제대로 구현되지 않았습니다.

경쟁 환경을 균등하게 만들기 위해 무엇을 할 수 있나요?

  • 보안을 최우선으로 하는 문화를 구축하세요 . DevSecOps 개념은 보안 중심 문화를 구축하려는 조직에 좋은 시작점입니다.
  • 감사를 수행합니다 . 감사는 애플리케이션 논리와 운영 프로세스에 대한 새로운 관점을 제공하고, 코드의 취약점을 드러내며, 애플리케이션 사용자에게 신뢰를 심어줍니다. MythXSlither는 Ethereum 스마트 계약을 감사하는 데 유용한 도구입니다.
  • 버그 바운티를 제공하고 군중 소싱 펜 테스트를 수행합니다 . 군중 소싱 보안은 보안 역량을 강화하는 데 도움이 되는 검증된 방법입니다. 회사를 버그 바운티 프로그램에 등록하고 애플리케이션과 인프라에 대한 침투 테스트를 수행하면 취약점과 해킹에 앞서 나갈 수 있습니다.
  • 오픈소스 전략을 채택하세요. 블록체인과 같은 기술에서는 애플리케이션의 투명성이 중요합니다. 참여자가 코드의 검증 및 감사를 기반으로 참여할 수 있기 때문입니다. 또한, 오픈 소스 구성 요소를 사용하면 커뮤니티 환경에서 프로젝트에 대한 책임감을 더 높일 수 있습니다.
  • 관리 작업을 위해 다중 서명을 구현합니다. 소유권, 자금 및 기타 중요한 작업 이전과 같은 관리 기능에 다중 서명 아키텍처를 채택한 스마트 계약을 구현하면 애플리케이션의 보안 계층이 한층 강화됩니다.

결론

블록체인, 분산형 애플리케이션 및 이를 둘러싼 다양한 프로토콜이 빠르게 성장하고 있습니다. 애플리케이션을 배포하는 이러한 새롭고 흥미로운 방법은 다양한 산업에 혁신을 일으킬 수 있는 잠재력을 가지고 있습니다. 하지만 가능한 한 보안을 최우선으로 생각하는 사고방식에 집중하고 DevSecOps 문화를 구현하는 것이 중요합니다.

추가 읽기

블록체인을 처음 접하는 사람이라면 누구나 먼저 해당 프로토콜에 대한 관련 백서를 읽어보는 것이 좋습니다. 

다음으로, 이전의 해킹과 취약점을 연구하고 심지어 개발 환경에서 해킹을 재현해 보는 것도 좋습니다.

이더리움 보안에 대한 실습적 학습 경험을 얻으려면 의도적으로 취약한 프로그램이나 웹사이트에 취약점이나 '플래그'를 숨겨 보안의 기본을 가르치는 다음 플래그 캡처(CTF) 프로그램을 추천합니다.