보안 취약점을 공개 이슈로 열지 마세요.
GitHub의 비공개 취약점 신고 기능을 이용해 주세요.
- 저장소의 Security 탭으로 갑니다
- Report a vulnerability를 누릅니다
- 재현 절차와 영향 범위를 적어 제출합니다
메인테이너만 볼 수 있으며, 수정본이 나오기 전까지 내용이 공개되지 않습니다.
신고에 포함하면 좋은 것:
- 영향받는 버전
- 재현 절차 또는 개념 증명
- 예상되는 영향
- 알고 있다면 완화 방법
접수 확인까지 보통 며칠이 걸립니다. 이 프로젝트는 상근 인력이 유지보수하지 않으므로 응답 시간을 보장하지 못합니다.
| 버전 | 지원 |
|---|---|
| 0.3.x | ✅ |
| 0.2.x 이하 | ❌ |
알파 단계이며 최신 마이너 버전만 수정합니다. 이전 버전으로의 백포트는 없습니다.
신고를 판단할 때 참고가 될 만한 사실들입니다.
표준 라이브러리만 씁니다(urllib, json, ssl, dataclasses). 공급망 공격 표면이 사실상 없습니다 — 이 패키지가 끌어오는 서드파티 코드가 없습니다.
law.go.kr OpenAPI 자격증명(“OC”)은 무료 계정 식별자이며 모든 요청 URL에 평문 쿼리 파라미터로 실려 나갑니다. 출처가 그렇게 설계돼 있습니다.
패키지에는 공용 기본값이 들어 있어 등록 없이 동작합니다. 이건 유출이 아니라 의도된 편의입니다.
그럼에도 OC는 새어 나가면 지저분하므로 모든 경로에서 마스킹됩니다.
- 모든 오류 메시지·응답 스니펫에서
***로 치환 HistoryEvent.article_link에 실리는 law.go.kr 링크에서OC=파라미터를 정규식 제거
OC가 마스킹을 우회해 노출되는 경로를 발견했다면 신고 대상입니다.
인증서 검증을 비활성화하는 옵션을 제공하지 않습니다. CA 번들 경로를 여러 후보에서 찾아 주지만(macOS Homebrew Python 대응), 검증 자체를 건너뛰지는 않습니다.
검증을 우회하게 만드는 입력이나 설정 조합을 발견했다면 신고 대상입니다.
이 패키지는 https://www.law.go.kr로 나가는 요청만 만듭니다. 서버를 띄우지 않고, 포트를 열지 않으며, 파일 시스템에 쓰지 않습니다.
읽는 파일은 현재 작업 디렉터리의 .env.local과 .env뿐이고, MOLEG_OC 값을 읽기 위해서입니다. 읽은 값은 os.environ에 심어지지 않습니다.
law.go.kr에서 오는 응답은 신뢰할 수 없는 입력으로 취급됩니다. 정규화 계층이 모든 파싱을 담당하며, 알아보지 못한 모양은 조용히 넘기지 않고 ParseFailureError로 올립니다.
eval·exec·pickle·동적 임포트를 쓰지 않습니다.
출처 응답으로 예기치 않은 코드 실행이나 자원 소진을 유발할 수 있다면 신고 대상입니다.
다음은 이 패키지의 보안 문제가 아닙니다.
- law.go.kr 자체의 취약점 — 법제처에 신고하세요
- 법령 데이터의 정확성 — 출처의 문제이며 Gotchas에서 다루는 해석 함정입니다
- 공용 기본 OC의 호출 제한 — 자기 OC를 발급받으세요 (Installation)
- 법적 결론의 오류 — 이 패키지는 출처 로더이지 법률 자문이 아닙니다
PyPI 배포는 GitHub Actions의 OIDC 신뢰 배포로만 이뤄집니다. 장기 API 토큰을 쓰지 않습니다.
배포는 GitHub Release 발행 시 자동으로 돌며, 워크플로가 배포 전에 다음을 검증합니다 — 테스트 통과, twine check, 그리고 설치된 휠이 체크아웃이 아닌 설치 대상에서 임포트되는지.