GitHub가 2026년 10월 20일 Dependabot 보안 알림의 REST API 응답에 version_requirement 필드를 추가했습니다. 이제 취약점 알림에서 해당 저장소가 마지막으로 기록한 의존성 버전 또는 버전 제약 조건을 직접 읽을 수 있습니다. 예전에는 취약한 버전의 범위는 보여도 저장소가 실제 어떤 버전을 쓰는지 알아내려면 잠금 파일을 다시 분석하거나 GraphQL을 추가로 호출해야 했습니다.
이번 변경은 Python 프로젝트에서 보안 알림을 자동 수집해 우선순위를 정할 때 유용합니다. 다만 값이 null일 수 있고, 저장소에 취약한 버전이 여러 개여도 한 가지만 표현할 수 있습니다. 따라서 이 필드를 실제 설치 버전의 완전한 재고 목록처럼 해석하면 안 됩니다. 아래에서는 새 필드와 취약 버전 범위의 차이, Python 조회 예제, 토큰 권한, 자동 보고의 한계를 살펴봅니다.
Dependabot API에 새로 추가된 필드
기존 응답의 security_vulnerability.vulnerable_version_range는 ‘어떤 버전 범위가 취약한가’를 말합니다. 새 dependency.version_requirement는 그 알림에 대해 Dependabot이 기록한 의존성 버전을 말합니다. 두 값의 의미가 다르므로 하나를 다른 값으로 바꿔 써서는 안 됩니다.
예를 들어 보안 권고에 ‘2.0 미만 취약’이라는 조건이 있고 저장소의 잠금 파일에는 ‘1.8.2’가 기록되어 있다면 취약 범위와 사용 중인 버전을 각각 표시할 수 있습니다. 반대로 잠금 파일이 없는 manifest만 검사했다면 정확한 설치 버전 대신 >=1.7,<2.0 같은 선언된 제약 범위가 들어갈 수 있습니다. 여기서 사용한 숫자는 설명용 가상 예시입니다.
Lockfile·Manifest·Dependency Submission에 따라 값이 달라집니다
GitHub의 10월 20일 공식 변경 기록은 탐지 경로를 세 가지로 구분합니다. 잠금 파일(lockfile) 기반 감지는 해결된 정확한 버전을 기록하고, 잠금 파일이 없는 의존성 선언 파일(manifest)에서는 작성자가 선언한 버전 또는 제약을 기록합니다. Dependency Submission API를 통해 전달된 결과는 빌드 도구가 보고한 해결 버전입니다.
또한 정보가 없으면 null을 반환합니다. 취약한 버전이 여러 개 있을 때 한 값만 포함되거나 길이가 긴 제약 조건이 잘릴 수 있다고 GitHub는 명시합니다. 이 값만으로 모든 하위 의존성이 안전하거나 모든 실행 환경이 같은 버전을 사용한다고 결론 내릴 수 없습니다.
준비: 보안 알림 권한과 Python 설치
알림을 조회하려면 대상 저장소에 대한 접근 권한이 필요합니다. GitHub 문서에 따르면 세분화된 액세스 토큰을 사용할 때는 해당 저장소에 Dependabot alerts: Read 권한이 필요합니다. 기존 개인용 토큰에서는 상황에 따라 security_events 또는 저장소 관련 범위를 요구할 수 있습니다. 조직 저장소의 정책과 API 권한을 먼저 확인하세요.
예제는 requests 라이브러리를 사용합니다. python -m pip install requests로 설치한 뒤, 토큰은 소스에 직접 넣지 말고 GITHUB_TOKEN 환경 변수, 대상 저장소는 REPOSITORY=owner/repo 환경 변수로 제공합니다. 공개된 저장소라 해도 보안 알림 API 조회에는 적절한 인증이 필요할 수 있습니다.
Python으로 Dependabot 취약 의존성 버전 조회하기
아래 코드는 2026년 10월 20일 공식 REST API 변경 기록을 바탕으로 작성한 테스트용 조회 예제입니다. 실제 저장소에서 실행해 확인한 출력 결과가 아니므로, 사용자의 토큰 권한과 저장소 설정에 따라 응답이 달라질 수 있습니다. 100건씩 가져오고 더 이상 결과가 없을 때 중지합니다.
import os
import requests
token = os.environ["GITHUB_TOKEN"]
owner, repo = os.environ["REPOSITORY"].split("/", 1)
url = f"https://api.github.com/repos/{owner}/{repo}/dependabot/alerts"
headers = {
"Accept": "application/vnd.github+json",
"Authorization": f"Bearer {token}",
"X-GitHub-Api-Version": "2026-03-10",
}
page = 1
while True:
response = requests.get(
url,
headers=headers,
params={"state": "open", "per_page": 100, "page": page},
timeout=20,
)
response.raise_for_status()
alerts = response.json()
if not alerts:
break
for alert in alerts:
dependency = alert.get("dependency") or {}
package = dependency.get("package") or {}
recorded_version = dependency.get("version_requirement")
print(
alert.get("number"),
package.get("name"),
recorded_version,
alert.get("html_url"),
)
if len(alerts) != 100:
break
page += 1
유의점: version_requirement가 None이라면 보고서에 ‘버전 미확인’으로 남기세요. 파싱 실패라고 무조건 단정하거나 빈 문자열을 안전 버전으로 치환하지 않아야 합니다. 예제는 실행 시 최신 알림 중 열린 항목을 조회할 뿐 보안 경고를 수정하거나 닫지 않습니다.
403·404 오류가 난다면 확인할 항목
403 오류는 토큰의 권한 부족, 조직 정책, 속도 제한 등 여러 원인으로 나타날 수 있습니다. 오류 응답과 Rate Limit 헤더를 함께 확인하고, 토큰을 불필요하게 광범위한 권한으로 재발급하지 마세요. 404 오류는 경로 오류뿐 아니라 접근할 수 없는 비공개 저장소에서도 나타날 수 있습니다. REPOSITORY 값과 보안 기능 활성화 여부를 확인합니다.
토큰을 로그에 출력하지 않고, 예외 발생 시에도 전체 요청 헤더를 공유하지 않는 것이 안전합니다. GitHub Actions에 연결한다면 토큰 권한과 출력 로그의 접근 범위를 별도로 점검하세요. 이 글의 REST API 조회는 GitHub AI Scan으로 PR 보안 검사를 적용하는 방법과 목적이 다릅니다. AI Scan은 코드 변경 검토, Dependabot 알림은 의존성 보안 위험 추적에 초점을 맞춥니다.
알림을 우선순위에 활용할 때는 여기까지 확인하세요
경고의 심각도와 패키지명만으로 운영 중인 시스템의 실제 위험을 모두 판단할 수는 없습니다. ① 현재 기록된 버전 ② 취약 버전 범위 ③ 수정 버전 존재 여부 ④ 해당 의존성이 운영에서 사용되는 경로 ⑤ 실제 업데이트 테스트를 함께 확인하세요.
예를 들어 잠금 파일이 오래된 경우 새 필드 값은 저장소 기록을 나타낼 뿐 실제 실행 서버의 컨테이너 버전을 보장하지 않습니다. Python 웹 서버나 FastAPI를 관리한다면 별도 환경에서 업데이트 회귀 테스트를 실행해야 합니다. 최근 실제 라이브러리 호환성 사례는 FastAPI 0.149.0의 폼 검증 변경 확인법에서 확인할 수 있습니다.
GitHub Enterprise Server에서도 사용할 수 있나요?
GitHub는 2026년 10월 20일 현재 github.com과 GitHub Enterprise Cloud(데이터 레지던시 포함)에서는 새 필드가 제공되며, GitHub Enterprise Server 3.24에 포함될 예정이라고 명시했습니다. 자체 호스팅 엔터프라이즈 서버가 구버전이라면 API 응답에 이 필드가 없을 수 있으므로, 일반 GitHub 웹 서비스와 같은 동작을 기대하면 안 됩니다.
공식 참고 문서와 날짜
1차 출처: GitHub Changelog: Dependabot alerts REST API now includes dependency versions (2026.10.20), GitHub Docs: REST API endpoints for Dependabot alerts, GitHub Docs: About Dependabot alerts.
작성·검증 기준일: 2026년 10월 21일(KST). REST 응답 형식, 지원 범위 및 API 버전은 GitHub 문서 변경에 따라 달라질 수 있습니다.