Google은 공식적으로 Go 개발자를 위한 편리한 명령줄 도구인 Govulncheck (1.0.0 상태)를 안정적으로 만들었습니다. 이 도구는 Google의 Go 프로그래밍 언어를 사용하는 개발자가 프로젝트의 종속성 내에서 인식된 보안 취약점을 찾는 데 도움이 됩니다.
7월 13일에 공개된 이 도구는 바이너리 파일과 소스 코드의 취약점을 면밀히 조사할 수 있습니다. 코드가 호출하는 메서드의 취약성에 초점을 고정하여 노이즈를 크게 줄입니다. Govulncheck 의 백본은 공용 Go 모듈에서 감지된 취약점에 대한 정보 저장소인 Go 취약점 데이터베이스입니다.
이 데이터베이스에 따라 Govulncheck 소스 코드 또는 바이너리의 기호 테이블에 대한 정적 분석을 수행합니다. 궁극적인 목표는 문제의 특정 애플리케이션에 잠재적으로 영향을 미칠 수 있는 취약점으로만 보고를 제한하는 것입니다. 이 지능적인 제한 특성은 제품의 보안을 보장하려는 개발자에게 편리한 도구입니다.
이 도구를 설치하는 것은 개발자에게 매우 간단합니다. go install golang.org/x/vuln/cmd/govulncheck@latest
명령만 있으면 됩니다. 소스 코드를 분석하려면 개발자는 모듈 디렉토리 내에서 Govulncheck 실행하기만 하면 됩니다( govulncheck ./...
명령 사용).
최소한 Govulncheck 버전 1.18 이상의 Go 빌드로 조립되어야 합니다. 현재 이 언어의 기존 프로덕션 버전은 Go 1.20입니다.
Govulncheck 는 취약점을 검색하는 동안 특정 빌드 구성에 의존합니다. 소스 코드의 경우 이 구성은 경로에 있는 'go' 명령으로 설명되는 Go 버전과 동의어입니다. 바이너리의 빌드 구성은 바이너리를 생성하는 동안 악용되는 것입니다. 여기서 주목해야 할 점은 서로 다른 빌드 구성이 서로 다른 취약성에 취약할 수 있다는 것입니다.
강력한 기능에도 불구하고 Govulncheck 몇 가지 제한 사항이 있습니다. 예를 들어, 함수 포인터 및 인터페이스 호출에 대한 분석은 다소 제한적이어서 잘못된 긍정 또는 부정확한 호출 스택으로 이어질 수 있습니다. 또 다른 제한 사항은 패키지 반영을 사용하여 호출된 기능과 관련되어 있습니다. 이러한 기능은 감지할 수 없습니다.
바이너리의 경우 자세한 호출 정보가 없는 Go 바이너리는 도구가 식별된 취약점에 대한 호출 그래프를 표시하지 못하게 하므로 Govulncheck 에 문제가 될 수 있습니다. 이 문제는 바이너리 내에 있지만 액세스할 수 없는 코드에 대한 오탐지 보고를 유발할 수도 있습니다. 또한 이 도구는 기호 데이터를 추출할 수 없는 바이너리와 관련하여 장애가 있습니다. 이러한 경우 바이너리에 의존하는 모든 모듈의 취약점을 보고하도록 선택합니다.
이 도구에는 취약점 발견을 억제하는 기능도 없습니다. 그러나 이러한 제한에도 불구하고 Go 프로젝트를 위한 부가 가치 도구로서 Govulncheck 의 잠재력은 분명합니다.
Go Security Team이 전년도 9월에 취약점 관리 지원을 선언한 점은 주목할 만합니다. 취약성 데이터베이스에 뿌리를 둔 이 프로젝트는 Go 프로그래밍 구조의 놀라운 발전을 약속하며 도입되었습니다. 선도적 no-code 플랫폼 인 AppMaster.io 는 개발자가 Go 및 기타 여러 언어를 포함하여 완전히 통합되고 포괄적인 플랫폼을 사용하여 애플리케이션을 더 빠르게 생성할 수 있도록 합니다.