2026년 개발자들이 GitHub에 개인 프로젝트를 공개하는 진짜 이유 3가지
- Apple/Google Wallet은 패스 하나당 정적 위치를 최대 10개로 제한
- Sofya는 print() 대신 Write 명령으로 출력, GitHub 저장소로 공개
- 2025년 3월 tj-actions/changed-files 액션 침해로 빌드 로그에 시크릿 유출
GitHub에 코드를 올리는 이유는 개발자마다 다릅니다. 누군가는 아내를 위한 재미있는 위치 알림 시스템을 자랑하고 싶어서, 누군가는 초보자에게 더 쉬운 프로그래밍 언어를 알리고 싶어서, 또 누군가는 모두가 놓치고 있는 보안 구멍을 경고하기 위해서입니다. 오늘은 dev.to에 올라온 세 개의 글을 통해 오픈소스와 개인 레포가 만들어내는 서로 다른 결의 이야기를 연결해봅니다.
사랑에서 시작된 지오펜싱 엔진
핵심: 단순한 "지갑에 멤버십 카드 추가" 티켓이 아내를 위한 적응형 위치 알림 엔진으로 발전했습니다.
한 개발자는 스프린트에서 "사용자가 Apple Wallet과 Google Wallet에 멤버십 카드를 추가할 수 있게 하라"는 평범한 티켓을 받았습니다. Apple Wallet, Google Wallet은 실물 카드나 쿠폰을 스마트폰에 디지털 패스로 저장하는 기능입니다. 그는 여기서 멈추지 않고, 여러 마트를 돌아다니며 가격을 비교하는 아내를 위해 재미있는 아이디어를 떠올렸습니다. 아내가 회사 매장이나 경쟁사 매장 근처를 지날 때마다 개인화된 위치 알림이 뜨도록 만들고 싶었던 것입니다.
문제는 Apple Wallet과 Google Wallet이 패스 하나에 심을 수 있는 정적 위치 좌표를 엄격히 제한한다는 점이었습니다. Apple Wallet의 경우 정적 위치는 최대 10개로 제한됩니다. 그는 PostGIS와 H3라는 공간 인덱싱 기술을 활용해 사용자의 구매 이력과 이동 패턴을 분석하고, 가장 관련성 높은 매장 10곳을 골라 APNs/FCM 푸시 알림 서비스로 패스 메타데이터를 실시간 갱신하는 백엔드를 설계했습니다. 아내가 쇼핑 루틴을 바꾸거나 새로운 마트를 시도해도 알고리즘이 새 패턴에 맞춰 지오펜스를 자동으로 업데이트했습니다.
이 사례는 개인적인 호기심이 어떻게 정교한 시스템 아키텍처로 발전할 수 있는지를 보여줍니다. 같은 맥락에서, 다음 사례는 또 다른 개인 프로젝트가 어떻게 GitHub 레포로 공개되어 다른 개발자들과 공유되는지를 보여줍니다.
Python보다 쉬운 언어를 만들어 GitHub에 공개하다
핵심: 괄호도 f-string도 없이 "Write ... and also write ..."로 출력하는 새 언어 Sofya가 GitHub에 공개됐습니다.
프로그래밍을 처음 배우는 사람들에게 화면에 정보를 출력하는 것조차 어려운 장벽이 될 수 있습니다. 한 개발자는 이 문제를 해결하겠다며 Sofya라는 새로운 프로그래밍 언어를 직접 만들었습니다. Python에서는 `print(f"Hello {name}. Welcome back!")`처럼 괄호와 f-string 포맷을 알아야 하지만, Sofya에서는 `Write "Hello" and also write Variable[Name] and also write "Welcome back!" on the screen`처럼 자연어에 가까운 문장으로 같은 결과를 출력할 수 있습니다.
그는 Sofya가 초보자에게 유리한 이유로 세 가지를 꼽았습니다. 괄호를 쓰지 않아 출력 명령이 더 자연스럽고, 문자열과 변수를 이어 붙일 때 포맷 문자열 대신 "and also say"라는 쉬운 구문을 쓰며, print()보다 Write라는 키워드가 기억하기 쉽다는 것입니다. 그는 GitHub 저장소(github.com/oyweraa-hue/Sofya-Version-1.0)를 통해 Sofya를 공개하고, 관심 있는 개발자들이 함께 언어를 발전시키길 제안했습니다.
개인의 아이디어를 GitHub 레포로 공개해 커뮤니티의 참여를 유도하는 것은 오픈소스의 전형적인 시작점입니다. 하지만 코드가 공개되고 여러 사람이 사용하기 시작하면, 그 코드를 실행하고 배포하는 인프라 자체의 안전성이라는 또 다른 문제가 떠오릅니다. 세 번째 기사는 바로 그 지점, 즉 오픈소스 코드를 빌드하고 배포하는 CI 파이프라인의 보안 문제를 다룹니다.
당신이 한 번도 스캔하지 않은, 가장 위험한 기계: CI 파이프라인
핵심: 애플리케이션 코드, 의존성, 컨테이너는 스캔하면서도 정작 배포 키와 클라우드 토큰을 쥔 CI 파이프라인은 검토조차 하지 않는다는 지적입니다.
CI(지속적 통합) 파이프라인은 코드가 푸시될 때마다 자동으로 빌드와 배포를 수행하는 시스템으로, 배포 키, 레지스트리 자격 증명, 클라우드 토큰, 서명 시크릿을 모두 보유하고 있습니다. 이 글은 공격자가 개발자의 노트북을 뚫으면 노트북 하나만 얻지만, 파이프라인을 뚫으면 프로덕션 전체를 얻는다고 경고합니다. 실제로 2021년 Codecov의 bash 업로더가 침해되며 수천 개 CI 환경의 시크릿이 노출된 사례가 있었고, 2025년 3월에는 널리 쓰이던 tj-actions/changed-files 액션이 침해돼 이를 참조한 모든 저장소의 빌드 로그에 시크릿이 유출되기 시작했습니다.
글은 구체적인 취약점 두 가지를 짚습니다. 첫째, `uses: some-org/some-action@v3`처럼 태그로 액션을 고정하면 그 계정이 침해될 경우 태그가 조용히 공격자 코드로 바뀔 수 있어, 커밋 SHA로 고정해야 안전합니다. 둘째, 시크릿을 저장소 전체에 공개해두면 린트 작업이나 포크의 풀 리퀘스트에서 실행되는 서드파티 포매터까지 시크릿을 읽을 수 있으므로, 환경 단위로 범위를 좁히고 프로덕션 자격 증명이 필요한 환경에는 승인 절차를 둬야 한다고 조언합니다.
| 사례 | 공개 방식 | 핵심 포인트 |
|---|---|---|
| 지오펜싱 엔진 | 기술 블로그 공유 | Apple Wallet 정적 위치 최대 10개 제한 우회 설계 |
| Sofya 언어 | GitHub 레포 공개 | Write 명령 기반의 간단한 출력 문법 |
| CI 파이프라인 보안 | 보안 가이드 게시 | 2025년 3월 tj-actions/changed-files 침해 사례 |
이게 나에게 의미하는 것
개인 프로젝트를 GitHub에 올리려는 개발자라면, Sofya 사례처럼 "왜 기존 도구보다 쉬운가"를 명확한 코드 비교로 보여주는 것이 저장소에 대한 관심을 끄는 데 도움이 됩니다. 사이드 프로젝트에서 위치 기반 알림이나 공간 데이터를 다뤄본 적이 있다면, 지오펜싱 엔진처럼 플랫폼의 제약(정적 위치 10개 제한 같은)을 데이터로 우회하는 설계가 실전에서 참고할 만한 패턴입니다. 만약 팀에서 서드파티 GitHub Action을 태그(@v3 형태)로 참조하고 있다면, 지금 바로 커밋 SHA로 고정했는지부터 점검할 필요가 있습니다.
정리: 오늘의 시사점
오늘 살펴본 세 사례는 오픈소스와 레포 공개가 하나의 동기로 설명되지 않는다는 점을 보여줍니다. 누군가는 순수한 재미와 애정에서, 누군가는 초보자를 위한 진입 장벽 낮추기에서, 누군가는 이미 널리 쓰이는 오픈소스 액션의 침해 사례를 근거로 경고를 하기 위해 코드와 글을 공개합니다. 특히 tj-actions/changed-files 침해처럼 널리 쓰이는 서드파티 코드가 공급망 공격의 통로가 될 수 있다는 사실은, 오픈소스를 가져다 쓰는 모든 프로젝트가 CI 워크플로 파일의 액션 고정 방식을 점검해야 하는 구체적인 이유가 됩니다. Sofya처럼 이제 막 공개된 작은 저장소부터 대규모로 쓰이는 Action까지, GitHub에 올라온 코드의 신뢰 수준을 매번 다르게 평가해야 한다는 점이 오늘 세 기사가 공통적으로 남기는 실무 메시지입니다.