인터넷을 파괴한 침해 사례: Log4Shell의 알려지지 않은 이야기

인터넷을 파괴한 침해 사례: Log4Shell의 알려지지 않은 이야기

Christian Grobmeier가 Minecraft 문제로 아들을 도우러 갔을 때 게임에 다음과 같은 경고가 표시되는 것을 발견했습니다. “우리는 Log4J의 보안 허점을 겪고 있습니다. 조심하고 즉시 업데이트하십시오.”

나는 화면을 바라보며 아들에게 말했다. ‘미안해요. 내 잘못이에요.’

Christian Grobmeier, Log4j 관리자

이는 한 관리자와 Log4j 팀이 디지털 인프라의 심각한 격차를 노출시키고 오픈 소스 보안과 지속 가능성의 중요성을 입증한 위기를 어떻게 헤쳐나갔는지에 대한 알려지지 않은 이야기입니다. 이제 GitHub Secure Open Source Fund와 같은 이니셔티브는 이러한 일이 다시는 발생하지 않도록 노력하고 있습니다.

이 모든 일은 오픈 소스 프로젝트 Log4j의 관리자인 Christian이 아들과 함께 게임을 하면서 시간을 보내기로 계획했던 추운 11월의 어느 날 몇 시간 전 시작되었습니다. 그 대신 그는 자신의 받은편지함에 알림이 10개, 그 다음에는 20개의 이메일이 쏟아져 들어오는 것을 보며 휴대폰을 바라보고 있었습니다. “원격 코드 실행”이라는 단어를 보았을 때 그의 첫 번째 생각은 “내가 잘못된 메일링 리스트에 있는 것일 수도 있습니다.”였습니다.

그는 그렇지 않았습니다. 그리고 몇 시간 안에 Christian은 인터넷 역사상 가장 심각한 취약성인 Log4Shell의 중심에 있게 됩니다. 이 취약점은 Fortune 500대 기업부터 전 세계 Minecraft 서버에 이르기까지 수십억 대의 장치에 영향을 미칩니다.

Christian은 이렇게 회상합니다. “아들에게 5분만 지나면 너랑 놀아주겠다고 말했어요. “하지만 그 사람은 며칠 동안 나를 만나지 않았어요.”

위에서 Christian Grobmeier와 GitHub의 직원 프로그램 관리자인 Gregg Cochran과의 전체 인터뷰를 시청하세요. 👆

Log4Shell을 완벽한 폭풍으로 만든 편재성

Log4j는 기본 소프트웨어입니다. 20년 이상 된 이 Java 로깅 라이브러리는 사용자 로그인 및 계산 결과와 같은 전 세계 애플리케이션의 시스템 이벤트를 조용히 지원합니다. 그러나 이 작은 소프트웨어는 Java 생태계 전반에 걸쳐 수천 개의 프로젝트에 조용히 종속되었습니다.

Log4j는 정말 작고 작은 라이브러리입니다. 그러나 누구나 자신의 소프트웨어에서 이를 사용할 수 있습니다.

크리스티안 그롭마이어

이러한 편재성은 Log4Shell을 파괴적으로 만들었습니다. 금융 서비스 회사는 규정 준수 감사를 위해 이를 활용했습니다. 전자상거래 시스템은 이를 보안 사고 추적에 사용했습니다. 보험 회사는 소프트웨어 동작을 모니터링하기 위해 이 기능이 필요했습니다. 2022년 Tidelift 설문 조사에서 오픈 소스 개발자의 49%는 자신의 조직이 Java에 의존하고 있다고 보고했으며 대부분은 자신도 모르게 Log4j를 사용하고 있었습니다.

Christian은 취약점의 범위를 깨달았을 때 즉시 “말 그대로 전 세계의 모든 Java 애플리케이션이 영향을 받을 수 있습니다. 10%라도 큰 문제가 될 것입니다. 이는 재앙이 될 것입니다.”라고 말했습니다.

10점 만점을 받은 취약점

Log4Shell은 겉으로는 무해해 보이는 기능이 어떻게 공격 벡터가 되었는지 보여줍니다. Log4j는 유연성을 제공하기 위해 JNDI(Java’s Naming and Directory Interface)를 사용하여 개발자가 원격 서버에서 소프트웨어 구성 요소를 로드할 수 있도록 했습니다. 그러나 라이브러리는 JNDI 조회 문자열이 신뢰할 수 있는 소스에서 나오는지 여부를 확인하지 않았습니다.

“문자열이 어떻게 인터넷을 끊을 수 있나요?” 크리스천이 묻습니다.

착취는 놀라울 정도로 간단했습니다. 공격자는 기록되는 모든 애플리케이션 필드(사용자 이름 필드, 검색 상자, 심지어 Minecraft 채팅 메시지까지)에 악성 JNDI 문자열을 입력하고 대상 시스템에서 원격 코드를 실행할 수 있습니다.

jndi:://:/

“특별한 지식이 필요하지도 않습니다.”라고 Christian은 말합니다. “그냥 뛰어다니면서 원하는 곳으로 줄을 밀어 넣으면 됩니다.”

CVSS(Common Vulnerability Scoring System)는 Log4Shell에 최고 점수인 10점을 부여했습니다.

“처음 이 점수에 대해 들었을 때 그다지 나쁘지는 않을 것 같다고 생각했습니다.”라고 Christian은 회상합니다. “그리고 며칠 후 저는 이렇게 생각했어요. 아마도 이것을 15점이나 20점으로 확장해야 할 것 같습니다.

중요한 인프라를 유지하는 데 드는 인적 비용

Log4Shell 위기 동안 유지관리자에 대한 개인적인 피해는 소프트웨어 공급망의 숨겨진 인적 비용을 드러냅니다. 대부분 자원 봉사자로 구성된 Christian과 그의 팀은 갑자기 인터넷의 절반에 영향을 미치는 취약점을 패치하는 책임을 맡게 되었습니다. 압력은 엄청났고 매우 개인적이었습니다.

우리 중 일부는 잠을 자지 않았습니다. 우리 모두는 앞으로 며칠 안에 지금 당장 문제를 해결하거나, 아니면 이 프로젝트를 종료해야 한다고 느꼈습니다.

크리스티안 그롭마이어

초기 취약점을 수정하면 추가 문제가 발견되어 Christian이 설명하는 “구멍이 있는 물 주머니. 구멍을 패치하면 또 다른 문제가 보입니다.”라고 설명하는 문제가 발생했습니다.

한편 커뮤니티 반응은 엇갈렸다. “한편에는 당신을 정말로 미워하는 사람들이 있고, 다른 한편에는 당신을 정말로 지지하는 사람들이 있습니다.”라고 Christian은 설명합니다.

아마도 가장 의미 있는 내용은 다음과 같습니다.

아무도 당신을 확인하기 위해 들르지 않습니다. 그들은 프로젝트를 확인합니다. 또한 일어나서 ‘이 문제를 해결하기 위해 노력해 주셔서 감사합니다’라고 말하는 사람도 없습니다.

크리스티안 그롭마이어

GitHub Secure Open Source Fund가 보안을 강화하는 방법

Log4Shell 사건은 오픈 소스 보안의 심각한 격차를 부각시켰습니다. 유지 관리 담당자는 처음부터 프로젝트에 보안을 구축하기 위한 교육과 리소스가 부족한 경우가 많습니다. 이러한 실현은 중요한 오픈 소스 프로젝트에 자금과 보안 교육을 모두 제공하는 GitHub Secure Open Source Fund와 같은 계획을 촉발시켰습니다.

이 기금은 사전 예방적 보호, 자원 공동화, 책임 공유의 형태로 효과적이고 효율적이었습니다. 오픈 소스 공급망을 위한 “보험”으로 생각하면 디지털 생태계를 더욱 안전하게 만들고 수십억 명의 사용자에게 영향을 미칠 수 있는 위험을 줄이는 데 도움이 됩니다.

Christian은 GitHub Secure Open Source Fund 보안 교육 프로그램에 참여했으며 그 영향은 혁신적이었습니다.

교육은 단지 기술적인 지식을 제공한 것이 아니라 그의 관점을 바꿔 놓았습니다. Christian은 “이 교육을 통해 개발자는 더 이상 가장 약한 고리가 아닙니다. 대신에 최전선 방어선이 됩니다.”라고 설명합니다.

이러한 사고방식의 변화는 매우 중요합니다. 크리스천은 이렇게 말합니다.

무지는 단연 최악이자 가장 심각한 보안 허점입니다. 기본적으로 모든 소프트웨어가 손상됩니다.

크리스티안 그롭마이어

GitHub Secure Open Source Fund 교육이 Log4Shell을 예방할 수 있었는지 묻는 질문에 Christian은 다음과 같이 직접적으로 말합니다. “이 교육이 5년 전에 존재했다면 아마도 Log4Shell은 오늘날 여기에 있지 않았을 것입니다.”

기술 강의: 기본적으로 보안 구축

Log4Shell 사건은 업계에 보안 개발 관행에 대한 몇 가지 중요한 교훈을 가르쳤습니다.

1. 모든 외부 입력의 유효성을 검사합니다.: 특히 사용자 입력을 처리하는 기본 라이브러리에서는 신뢰 경계를 넘는 데이터를 신뢰하지 마십시오.

2. 기본적으로 위험한 기능을 비활성화합니다.: Log4j는 이제 기본적으로 JNDI 조회가 비활성화된 상태로 제공됩니다.

3. 심층적인 방어 구현: 최신 애플리케이션에는 입력 검증부터 런타임 보호까지 여러 계층의 보호가 필요합니다.

4. 보안 검색 자동화: GitHub의 코드 스캐닝 및 dependencyabot과 같은 도구는 취약점이 프로덕션에 도달하기 전에 발견할 수 있습니다.

5. 소프트웨어 자재 명세서(SBOM) 유지: Log4Shell이 ​​공격을 받았을 때 많은 조직에서는 종속성을 몰랐기 때문에 영향을 받았는지 확인할 수 없었습니다.

“동료들로부터 ‘내가 정말 영향을 받았나요?’라는 질문을 받는 전화를 받았습니다. SBOM은 프로젝트에서 어떤 종속성을 사용하고 있는지 알아내는 기술적인 방법을 제공합니다.”라고 Christian은 설명합니다.

지속 가능한 오픈 소스에 대한 업계 전반의 교훈

Log4Shell의 기술적인 교훈은 중요하지만 기술 변화만으로는 충분하지 않습니다. 더 깊은 도전은 우리 세상이 의존하는 오픈 소스 인프라를 유지하는 사람들을 어떻게 지원하느냐에 있습니다. 이번 위기는 우리가 오픈 소스 지속 가능성과 보안에 접근하는 방식에 있어 몇 가지 체계적인 문제를 드러냈습니다.

커뮤니티가 중요합니다: “단 한 사람이 오픈 소스 소프트웨어를 유지 관리한다면 이는 위험합니다.”라고 Christian은 강조합니다.

보안 교육을 받을 수 있어야 합니다.: 전통적인 보안 교육은 이를 가장 필요로 하는 관리자에게 전달되지 않는 경우가 많습니다.

자금만으로는 부족하다: 재정적 지원이 도움이 되지만 Christian은 훈련과 커뮤니티도 똑같이 중요하다는 사실을 깨달았습니다. 팀원들에게 급여를 지급하기 위한 자금을 제안했을 때 많은 사람들이 세금 문제나 기존 직업으로 인해 거절했습니다.

친절이 중요하다: “모든 작은 오픈 소스 라이브러리 뒤에는 코드를 작성하는 사람이 있습니다.”라고 Christian은 상기시켜 줍니다. “잘못된 일을 발견하면 화를 내기보다는 도와주세요.”

모든 프로젝트의 보안이 향상될 수 있습니다.: 프로그램 기간 동안 Christian은 스크립트 주입에 대한 GitHub Action 강화, 새로운 위협 모델 개발, ScanCode와 협력하여 타사 코드에 숨겨진 Log4j 아티팩트 식별 등 여러 가지 새로운 보안 개선 사항을 구현했습니다.

소프트웨어 공급망 보안에서의 귀하의 역할

Log4Shell 이야기는 단지 하나의 취약점에 관한 것이 아닙니다. 이는 현대 인터넷을 구동하는 오픈 소스 생태계를 유지하는 데 있어 우리 모두가 공유하는 공동 책임에 관한 것입니다.

유지관리자를 위한: GitHub Secure Open Source Fund와 같은 프로그램에 지원하세요. GitHub의 코드 스캐닝 및 dependencyabot과 같은 내장 보안 도구를 활성화하세요. 다운스트림 사용자가 종속성을 이해할 수 있도록 SBOM을 내보내고 프로젝트에서 발견된 모든 취약점에 대한 보안 권고를 게시하세요.

기업의 경우: GitHub Secure Open Source Fund의 자금 조달 또는 생태계 파트너가 되어 보세요. 귀하가 의존하는 업스트림 프로젝트에 엔지니어링 시간을 투자하십시오. 오픈 소스만 사용하지 말고 코드, 문서, 보안 검토 및 자금 지원을 통해 기여하세요.

개인 개발자의 경우: 예를 들어 보안 상태를 확인하여 끌어오는 새 종속성을 신중하게 선택하십시오. 처리하는 데이터가 공격자에 의해 제어될 수 있다는 점을 고려하고 의도하지 않은 동작을 방지하기 위해 신뢰할 수 없는 입력을 엄격하게 검증합니다. 테스트 사례 및 문서를 제공합니다.

앞으로 나아갈 길

현재 Log4j의 OpenSSF 점수는 8.3으로 우수한 보안 사례를 보여줍니다.

그러나 더 넓은 교훈은 단일 프로젝트를 넘어 확장됩니다. 크리스천은 이렇게 말합니다.

배움은 무지에 대한 유일한 치료법입니다. 그러니 계속 배우세요.

크리스티안 그롭마이어

Log4Shell 사건은 단일 취약점으로 인해 디지털 세계가 얼마나 빨리 위협받을 수 있는지를 보여주었습니다. 그러나 이는 또한 대응하고, 적응하고, 개선할 수 있는 오픈 소스 커뮤니티의 힘을 보여주었습니다. 문제는 다음에 심각한 취약점이 나타날지 여부가 아니라 이에 대비할 수 있는지 여부입니다.


오픈소스 프로젝트의 보안을 강화할 준비가 되셨나요? GitHub Secure Open Source Fund는 관리자가 보다 안전한 소프트웨어를 구축하는 데 도움이 되는 자금, 교육 및 리소스를 제공합니다.

  • 프로젝트 및 유지관리자: 지금 GitHub Secure Open Source Fund에 신청하여 모든 사람을 위해 오픈소스를 더욱 안전하게 만드는 데 도움을 주세요.
  • 자금 조달 및 생태계 파트너: 자금 조달 또는 생태계 파트너가 되어 보다 안전한 오픈 소스 미래를 지원하세요. 대규모로 소프트웨어 공급망을 보호하는 이 임무에 동참하세요!

모든 파트너 여러분께 감사드립니다.

우리는 놀라운 파트너 네트워크 없이는 이 일을 할 수 없었습니다. 우리는 함께 모두를 위한 오픈 소스 생태계를 확보하는 데 도움을 주고 있습니다!

자금 조달 파트너: Alfred P. Sloan 재단, American Express, Chainguard, Datadog, Herodevs, Kraken, Mayfield, Microsoft, Shopify, Stripe, Superbloom, Vercel, Zerodha, 1Password

생태계 파트너: Ecosyste.ms, CURIOSS, 혁신 과학을 위한 디지털 데이터 디자인 연구소, 디지털 인프라 통찰력 기금, Microsoft for Startups, Mozilla, OpenForum Europe, Open Source Collective, OpenUK, Open Technology Fund, OpenSSF, 오픈 소스 이니셔티브, OpenJS Foundation, University of California, Santa Cruz OSPO, Sovereign Tech Agency, SustainOSS

작성자:

그렉 코크란

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다