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

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
packj — 정적 및 동적 분석 도구로, 오픈소스 패키지의 악성, 취약, 위험 속성을 감사하며, 샌드박스 설치를 통해 공급망 공격을 방지합니다. | Kitploit
도구/GitHubGitHub/ossillate-inc/packj
Static AnalysisVulnerability ScannersDynamic Analysis (Sandboxing)Malware AnalysisDevSecOpsSupply Chain Security
GitHubossillate-inc/packj

packj

정적 및 동적 분석 도구로, 오픈소스 패키지의 악성, 취약, 위험 속성을 감사하며, 샌드박스 설치를 통해 공급망 공격을 방지합니다.

저장소 보기
691373113일 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
웹사이트
공유

  Packj가 악성/위험한 오픈소스 패키지를 식별합니다

Packj (패키지로 발음)는 소프트웨어 공급망 공격을 완화하는 도구입니다. NPM, RubyGems, PyPI와 같은 인기 있는 오픈소스 패키지 레지스트리에서 악성, 취약, 유지보수 중단, 타이포스쿼팅 및 기타 "위험한" 패키지를 탐지할 수 있습니다. 노이즈를 최소화하기 위해 쉽게 사용자 정의할 수 있습니다. Packj는 박사 연구 프로젝트로 시작했으며 현재 다양한 정부 보조금으로 개발 중입니다.

GitHub Stars Prs Welcome Github Commit Activity Discord License: AGPL v3 Docker

참고 이번 달 말에 Packj 웹서버 및 여러 통합 기능이 제공됩니다. 👊 이 저장소를 지켜봐 주세요.

데모 동영상

목차

  • 시작하기 - Docker 이미지, GitHub Action, 패키지로 제공
  • 기능 - 심층 정적/동적 코드 분석 및 샌드박싱
  • 지원되는 생태계 - NPM, PyPI, Rubygems, PHP, Rust
  • 우리의 이야기 - 박사 연구 프로젝트로 시작, 정부 보조금 지원
  • 왜 Packj인가 - 기존 CVE 스캐너는 코드가 무해하다고 가정하고 동작을 분석하지 않음
  • 사용자 정의 - 위협 모델에 따라 알림을 끄고 노이즈 감소
  • 발견된 악성코드 - 70개 이상의 악성 PyPI 및 RubyGems 패키지 신고
  • 발표 및 동영상 - PyCon, OpenSourceSummit, BlackHAT에서 발표
  • 프로젝트 로드맵 - 새 기능 보기 또는 제안; 디스코드 채널 참여
  • 팀 및 협업 - 학계/업계의 사이버보안 연구원 주도
  • FAQ - 지원되는 패키지 관리자, 기법 관련 자주 묻는 질문 등

시작하기

여러 배포 모델을 지원합니다:

1. GitHub 러너

Packj를 사용하여 풀 리퀘스트의 종속성을 감사합니다.```yaml

  • name: Packj Security Audit uses: ossillate-inc/packj-[email protected] with:

    TODO: replace with your dependency files in the repo

    DEPENDENCY_FILES: pypi:requirements.txt,npm:package.json,rubygems:Gemfile REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
View on GitHub [marketplace](https://github.com/marketplace/actions/packj-security-audit). Example [PR run](https://github.com/ossillate-inc/packj-github-action-demo/pull/3#issuecomment-1274797138).

### 2. Docker 이미지 (권장)

Packj를 시도/테스트하는 가장 빠른 방법은 Docker를 사용하는 것입니다. Podman도 컨테이너화된(격리된) 실행을 위해 지원됩니다.```
docker run -v /tmp:/tmp/packj -it ossillate/packj:latest --help

3. 소스 저장소

이 저장소를 클론하세요,``` git clone https://github.com/ossillate-inc/packj.git && cd packj

의존성 설치```
bundle install && pip3 install -r requirements.txt

도움말로 시작하세요:``` python3 main.py --help

# 지원되는 에코시스템 #

Packj는 NPM, PyPI, Rust, PHP, Rubygems 패키지 레지스트리에서 게시된 패키지를 검증할 수 있습니다. Rust 및 PHP 지원은 진행 중입니다. 레지스트리 지원을 적극적으로 추가 중입니다.
또한 로컬(미게시) NPM 및 PyPI 패키지 검증도 지원합니다.

| 레지스트리  | 에코시스템  | 지원 여부          |
| --------- | ---------- | ------------------ |
| NPM       | JavaScript | :white_check_mark: |
| PyPI      | Python     | :white_check_mark: |
| Cargo     | Rust       | :white_check_mark: |
| Rubygems  | Ruby       | :white_check_mark: |
| Packagist | PHP        | :white_check_mark: |
| Docker    | Docker     | :x: |
| Nuget     | .NET       | :white_check_mark: |
| Maven     | Java       | :white_check_mark: |
| Cocoapods | Swift      | :x: |

# 기능 #

Packj는 다음과 같은 도구를 제공합니다:

* [감사](#auditing-a-package) - 패키지의 "위험한" 속성을 검증합니다.
* [샌드박스](#sandboxed-package-installation) - 패키지의 안전한 설치를 위한 도구입니다.

## 패키지 감사 ##

Packj는 오픈소스 소프트웨어 패키지에서 공급망 공격에 취약하게 만드는 "위험한" 속성을 감사합니다. 예를 들어, 만료된 이메일 도메인(2FA 부족), 큰 릴리스 시간 간격, 민감한 API 또는 접근 권한 등을 가진 패키지는 위험으로 표시됩니다.

다음 감사가 지원됩니다:

- 여러 패키지: `python3 main.py audit -p pypi:requests rubygems:overcommit`
- 의존성 파일: `python3 main.py audit -f npm:package.json pypi:requirements.txt`

기본적으로 `audit`는 위험한 코드를 감지하기 위해 정적 코드 분석만 수행합니다. `-t` 또는 `--trace` 플래그를 전달하면 동적 코드 분석도 함께 수행하여 요청된 모든 패키지를 strace 아래에 설치하고 설치 시간 동작을 모니터링합니다. 아래 예제 출력을 참조하세요.

<details>
    <summary><h4>예제 실행/출력 보기</h4></summary>

    $ docker run -v /tmp:/tmp/packj -it ossillate/packj:latest audit --trace -p npm:browserify

    [+] Fetching 'browserify' from npm..........PASS [ver 17.0.0]
    [+]    Checking package description.........PASS [browser-side require() the node way]
    [+]    Checking release history.............PASS [484 version(s)]
    [+] Checking version........................RISK [702 days old]
    [+]    Checking release time gap............PASS [68 days since last release]
    [+] Checking author.........................PASS [[email protected]]
    [+]    Checking email/domain validity.......RISK [expired author email domain]
    [+] Checking readme.........................PASS [26838 bytes]
    [+] Checking homepage.......................PASS [https://github.com/browserify/browserify#readme]
    [+] Checking downloads......................PASS [2M weekly]
    [+] Checking repo URL.......................PASS [https://github.com/browserify/browserify]
    [+]    Checking repo data...................PASS [stars: 14189, forks: 1244]
    [+]    Checking if repo is a forked copy....PASS [original, not forked]
    [+]    Checking repo description............PASS [browser-side require() the node.js way]
    [+]    Checking repo activity...............PASS [commits: 2290, contributors: 207, tags: 413]
    [+] Checking for CVEs.......................PASS [none found]
    [+] Checking dependencies...................RISK [48 found]
    [+] Downloading package from npm............PASS [163.83 KB]
    [+] Analyzing code..........................RISK [needs 3 perm(s): decode,codegen,file]
    [+] Checking files/funcs....................PASS [429 files (383 .js), 744 funcs, LoC: 9.7K]
    [+] Installing package and tracing code.....PASS [found 5 process,1130 files,22 network syscalls]
    =============================================
    [+] 5 risk(s) found, package is undesirable!
    => Complete report: /tmp/packj_54rbjhgm/report_npm-browserify-17.0.0_hlr1rhcz.json
    {
        "undesirable": [
            "old package: 702 days old",
            "invalid or no author email: expired author email domain",
            "generates new code at runtime",
            "reads files and dirs",
            "forks or exits OS processes",
        ]
    }
</details>

> 경고: 패키지가 설치 중에 악성 코드를 실행할 수 있으므로, `-t` 또는 `--trace`는 Docker 컨테이너나 가상 머신 내에서만 사용하는 것이 좋습니다.

감사는 Docker/Podman 컨테이너에서도 수행할 수 있습니다. 위험한 속성 및 사용 방법에 대한 자세한 내용은 [Audit README](https://github.com/ossillate-inc/packj/blob/main/packj/audit/README.md)를 참조하십시오.

## 샌드박스 패키지 설치 ##

Packj는 패키지의 `안전한 설치`를 위한 경량 샌드박싱을 제공합니다. 구체적으로, 악성 패키지가 민감한 데이터를 유출하거나, 민감한 파일(예: SSH 키)에 접근하거나, 악성 코드를 지속적으로 설치하는 것을 방지합니다.

설치 시간 스크립트(네이티브 컴파일 포함)를 샌드박싱합니다. **strace**를 사용합니다(즉, VM/컨테이너가 필요 없음).

샌드박싱 메커니즘 및 사용 방법에 대한 자세한 내용은 [Sandbox README](https://github.com/ossillate-inc/packj/blob/main/packj/sandbox/README.md)를 참조하십시오.

<details>
    <summary><h4>예제 실행/출력 보기</h4></summary>
도구 다운로드