서드파티 라이브러리의 함정

  • 서드파티 라이브러리의 함정

최근 서드파티 로깅 라이브러리에서 원격 명령 실행이 가능한 취약점이 발견되었습니다. 로깅 라이브러리와 원격 명령 실행은 전혀 관련이 없어 보이지만, 서드파티 라이브러리에는 부수적인 기능이 너무 많습니다.

읽은 코드가 많아질수록 많은 오픈소스 코드의 수준이 매우 낮다는 것을 실감하게 됩니다. 별이 몇 개가 있든 상관없이, 별은 수요를 의미할 뿐 개발 수준을 의미하지는 않습니다.

오픈소스의 장점은 더 많은 개발자가 참여할 수 있다는 것이며, 장점은 기능이 빠르게 추가되고 버그가 해결되며 코드가 검토된다는 것입니다. 하지만 개발자의 수준은 천차만별입니다.

강력한 커밋 제약이 없다면 코드 품질을 보장하기 어렵습니다.

코드가 많을수록 공격 표면이 늘어납니다.

중복 개발은 좋지 않지만, 제품의 요구사항은 유모차 바퀴와 같습니다. 플라스틱 바퀴 하나면 언제든 사용할 수 있지만, 비행기 타이어를 장착하면 공격 표면과 유지보수 비용만 늘어납니다. 따라서 유모차 바퀴만 필요하다면 대형 부품을 소형에 사용하지 말아야 합니다.

유지보수 비용이 높습니다. 서드파티 라이브러리는 전담 프로세스와 인력이 필요합니다. 화웨이는 테스트 프레임워크를 개조하여 컴파일러를 업그레이드하면 테스트가 실패하는 상황을 겪었습니다. 테스트 프레임워크와 컴파일러를 동시에 업그레이드하면 충돌이 발생하여 유지보수 시 개조 작업에 많은 시간이 소요됩니다. 직접 참여한 사람으로서 서드파티 라이브러리를 개조하는 어려움을 깊이 체감했습니다. 개조한 기능을 오픈소스 라이브러리에 합치는 것은 다행이지만, 자신만의 요구사항을 위해 침투적인 맞춤형 개발을 하면 유지보수가 매우 어려워집니다.

화웨이는 서드파티 라이브러리에 대해 일련의 프로세스를 구축하여 접근을 차단했습니다.

문턱을 극도로 높게 설정하여, 새로운 서드파티 라이브러리는 18급 전문가와 20급 부장의 검토를 받아야 하며, 기본적으로 오래된 명성을 가진 서드파티 라이브러리만 사용할 수 있습니다.

모든 서드파티 라이브러리는 thirdparty 폴더에 위치하며, 전체 컴파일 시 CI가 원본 라이브러리와 비교하여 침투적 수정을 엄격히 금지합니다.

모든 서드파티 라이브러리의 버전을 추적하는 전용 툴이 있으며, 이 부분은 외주 인력을 고용하여 관리합니다. 개발자가 버전 업그레이드를 신청할 경우 신청서를 제출하고 부장의 검토를 받아야 합니다.

부장에게 이런 일을 처리하도록 하기는 어렵습니다. 프로세스가 매우 번거로울 때, 실제로는 그렇게 하지 말라는 의미입니다.

서드파티 라이브러리에 대해서는 경계심을 가져야 하며, 동료 개발자를 믿는 것이 좋습니다.