Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
sloppy-joe — 공급망, slopsquatting, typosquatting 공격으로부터 의존성과 코드를 보호합니다. | Kitploit
도구/GitHubGitHub/brennhill/sloppy-joe
Static AnalysisVulnerability ScannersCode AnalysisDevSecOpsSecret DetectionThreat IntelligenceSupply Chain SecurityLearning & Education
GitHubbrennhill/sloppy-joe

sloppy-joe

공급망, slopsquatting, typosquatting 공격으로부터 의존성과 코드를 보호합니다.

저장소 보기
3213217시간 52분 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

sloppy-joe

환각된, 타이포스쿼팅된, 비정규 의존성이
프로덕션에 도달하기 전에 잡아내세요.

cargo install sloppy-joe


침해된 릴리스는 정당한 패키지 이름을 사용할 수 있습니다. LiteLLM 유지관리자 보고서는 2026년 3월의 악성 버전 1.82.7 및 1.82.8을 식별합니다. sloppy-joe의 기본 72시간 게시 경과 시간 기준은 설치 전에 --ci 또는 --full로 해석된 의존성 그래프를 스캔할 때 새로 게시된 버전을 거부할 수 있습니다. 이는 타이밍 정책이며, 악성 페이로드를 검사하는 것이 아닙니다.

연구 문서는 생성된 코드의 패키지 환각을 다룹니다. sloppy-joe는 설치 전에 의존성 이름과 메타데이터를 검사합니다. 존재 여부만으로는 등록된 패키지가 안전하다고 입증할 수 없습니다.

패키지 이름은 타이포 분석 작업을 제한하기 위해 npm의 경우 214바이트, 다른 생태계의 경우 1,024바이트로 제한됩니다. 더 긴 이름은 Scan not supported(종료 코드 2)를 보고합니다.

사용 방법

# Install (single static binary, no runtime dependencies)
cargo install sloppy-joe

# Or download a prebuilt binary archive from GitHub Releases
# https://github.com/brennhill/sloppy-joe/releases

# Fast local guardrail — auto-detects ecosystem from manifest files
sloppy-joe check

# Strict online scan (recommended before push / release)
sloppy-joe check --full

# Strict CI-oriented scan
sloppy-joe check --ci

# Check a specific directory
sloppy-joe check --dir ./my-project

# Check only npm dependencies
sloppy-joe check --type npm

# Check the Python runtime plus selected groups/extras
sloppy-joe check --python-groups dev,test --python-version 3.12
sloppy-joe check --python-extras docs --python-platform linux --python-version 3.12

# Enforce canonical rules and org standards via config
sloppy-joe check --config /etc/sloppy-joe/config.json

# Config from a URL (useful in CI — no secrets to manage)
sloppy-joe check --config https://raw.githubusercontent.com/yourorg/security-configs/main/sloppy-joe.json

# JSON output for CI pipelines
sloppy-joe check --json

# Review exact maintainer-change exceptions with evidence
sloppy-joe check --review-exceptions

# Create and register a safe per-repo config outside the repo
sloppy-joe init --register

# Create an ecosystem-specific greenfield starter policy
sloppy-joe init --greenfield --ecosystem npm

# Print review-only bootstrap suggestions for an npm or Cargo repo
sloppy-joe init --from-current

# Or write/register those suggestions safely outside the repo
sloppy-joe init --from-current --register

# Or write a config manually to a secure path outside the repo
sloppy-joe init > /secure/location/sloppy-joe.json

Nix

nix profile install github:brennhill/sloppy-joe

main의 flake는 게시된 바이너리 릴리스와 그 체크섬을 고정합니다.

스캔 모드:

  • sloppy-joe check는 빠른 로컬 가드레일을 실행합니다. 항상 매니페스트 파싱, lockfile/동기화, 출처(provenance), 지원되지 않는 소스 정책을 적용합니다. 의존성 또는 정책 상태가 변경되었거나 마지막 성공한 전체 스캔이 24시간보다 오래된 경우 sloppy-joe check --full을 권장합니다.
  • sloppy-joe check --full은 엄격한 온라인 스캔을 실행하고 기록된 성공적인 전체 스캔 상태를 갱신합니다.
  • sloppy-joe check --ci는 --full과 동일한 엄격한 범위를 CI 지향 의도로 실행합니다.
  • Python의 경우 sloppy-joe check는 기본적으로 runtime 프로필을 평가합니다. 범위가 지정된 의존성이 존재하면 경고하고 CI/빌드 일관성을 위해 명시적인 --python-groups, --python-extras, --python-platform, 및/또는 --python-version 플래그를 전달하라고 안내합니다.
  • 사람이 읽을 수 있는 일반 sloppy-joe check 출력은 항상 CI 및 프로덕션 게이팅을 위해 --ci 또는 --full을 사용하라고 상기시킵니다.

종료 코드: 0 = 선택한 모드에서 차단 문제 없음, 1 = 차단 발견 사항, 2 = 지원되지 않는 스캔 입력 또는 런타임 오류. 지원되지 않는 구문/구성은 악성코드 발견 사항이 아닙니다.

지원: JavaScript(npm, pnpm, Yarn, Bun), Python, Rust, Go, Ruby, PHP, JVM(Gradle/Maven), 및 .NET — 매니페스트 파일에서 자동 감지됩니다.

에코시스템 가이드: 각 에코시스템의 현재 신뢰 모델, 지원 기능, 및 fail-closed 제한은 docs/ecosystems/README.md를 참조하세요.

  • JavaScript
  • Python
  • Rust
  • Go
  • Ruby
  • PHP / Composer
  • JVM
  • .NET / NuGet
에코시스템필수 매니페스트신뢰할 수 있는 lockfile / 프로젝트 상태
JavaScript / npmpackage.jsonpackage-lock.json 또는 npm-shrinkwrap.json; 레거시 npm v1은 기본적으로 차단됨
JavaScript / pnpmpackage.jsonpnpm-lock.yaml
JavaScript / Yarnpackage.jsonyarn.lock
JavaScript / Bunpackage.jsonbun.lock
Pythonpyproject.toml, requirements*.txt, Pipfile, setup.cfg, 또는 setup.py신뢰할 수 있는 Poetry 경로는 poetry.lock을 사용하고, 신뢰할 수 있는 uv 경로는 uv.lock을 사용하며, 완전히 해시 잠금된 pip-tools는 커밋된 requirements 그래프가 --index-url 및 모든 --extra-index-url 값을 정확히 바인딩할 때만 신뢰됩니다; 저장소에 표시되는 Python 인덱스는 trusted_indexes.pypi를 통해 허용 목록에 추가할 수 있습니다; 신뢰할 수 있는 Python 모드는 한 번에 하나의 선택된 설치 프로필을 평가합니다(기본적으로 runtime, CLI를 통해 명시적 groups/extras/platform/arch/version); 레거시 매니페스트는 기본적으로 경고와 함께 허용됨
RustCargo.tomlCargo.lock
Gogo.mod외부 의존성의 경우 go.sum 필요
RubyGemfileGemfile.lock
PHP / Composercomposer.jsoncomposer.lock
JVM / Gradlebuild.gradle 또는 build.gradle.ktsgradle.lockfile
JVM / Mavenpom.xml경고 전용: 아직 신뢰할 수 있는 프로젝트 로컬 lockfile 경로 없음
.NET / NuGet.csprojpackages.lock.json

스캔 범위: 재귀 스캔은 기본적으로 .planning을 무시합니다. 외부 정책에서 "ignore_dirs": [".planning", "experiments"]를 구성하여 다른 디렉터리 이름을 제외하거나, "ignore_dirs": []를 사용하여 구성 가능한 제외를 비활성화하세요. 디렉터리 제외를 참조하세요.

여러 프로젝트가 있는 저장소: Sloppy Joe는 발견된 각 프로젝트의 의존성 체인을 개별적으로 실행하고 결과를 결합합니다. 백엔드, UI, 관리자 앱, 도구가 서로 다른 매니저와 lockfile을 사용할 수 있습니다. 불완전한 상위 npm/pnpm 워크스페이스 선언은 상위가 packageManager를 명시적으로 선언하지 않는 한 독립적으로 잠긴 하위 프로젝트를 자기 것으로 주장하지 않습니다. Sloppy Joe는 그러한 선택을 경고로 보고합니다. 활성 워크스페이스는 공유 lockfile 검사를 유지합니다. 사람이 읽는 보고서와 JSON 보고서는 각 manifest, 매니저, lockfile, 패키지 수, 결과를 식별합니다. 다중 프로젝트 스캔에서 지원되지 않는 프로젝트는 불완전한 결과(종료 코드 2)를 생성하지만, 독립적으로 바인딩된 다른 프로젝트는 계속 실행됩니다. 패키지 수에는 각 프로젝트의 커버리지가 포함되므로 공유 의존성이 여러 프로젝트 실행에 나타날 수 있습니다.

비공개 npm 레지스트리(npm 및 pnpm): 프로젝트 로컬 .npmrc의 기본 및 스코프 지정 HTTPS 레지스트리 경로가 지원됩니다. 사용자 지정 레지스트리로 라우팅된 패키지는 사람이 읽는 출력과 JSON 출력에서 차단하지 않는 resolution/private-registry-unvetted 경고를 생성합니다. 비공개 패키지의 공개 의존성을 포함한 공개 패키지는 정상 검사를 유지합니다. 비공개 패키지의 신원은 공개 레지스트리나 OSV로 전송되지 않으며, 그 존재 여부, 오타 유사성, 릴리스 경과 기간, 게시자 이력, 취약점은 검증되지 않습니다. Lockfile 일관성, 무결성 메타데이터, 선언된 레지스트리 소스 경계는 여전히 적용됩니다. 스캐너는 레지스트리 자격 증명을 절대 확장하거나 전송하지 않습니다. JavaScript 가이드를 참조하십시오.

구성 소스: 로컬 파일 경로, HTTPS URL 또는 SLOPPY_JOE_CONFIG 환경 변수입니다. 구성은 프로젝트 디렉터리에서 절대 읽지 않습니다(이유는 CONFIG.md 참조).

온보딩: 저장소에 맞는 부트스트랩 모드를 사용하십시오:

  • sloppy-joe init --greenfield --ecosystem <eco>는 새 프로젝트를 위한 생태계별 시작 정책을 출력합니다. 현재 그린필드 프리셋은 npm, pypi, cargo에 대해 구현되어 있으며, 다른 생태계는 "not supported yet" 오류와 함께 실패합니다. 저장소 외부에 작성하고 안전하게 등록하려면 --register를 추가하십시오.
  • sloppy-joe init --from-current는 현재 저장소를 검사하고 검토 전용 부트스트랩 제안을 출력합니다. 현재 --from-current는 자사 코드가 npm 및/또는 cargo인 저장소에 대해서만 구현되어 있으며, 다른 생태계는 "not implemented yet" 오류와 함께 안전하게 실패합니다. 생성된 구성을 작성하고 등록하려면 --register를 추가하십시오.
  • 모드 없이 sloppy-joe init을 실행하면 중립적인 수동 템플릿을 출력합니다.

sloppy-joe가 필요한 이유

sloppy-joe는 패키지 존재 여부, 이름 유사성 휴리스틱, 정규 패키지 정책, 게시 경과 기간 게이트, 메타데이터 위험 신호, OSV 권고 조회를 하나의 Rust 바이너리로 결합합니다.

도구 다운로드