Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
bidi_char_detector — 파일에서 공급망 공격에 악용될 수 있는 유니코드 BIDI 문자의 존재 여부를 확인합니다. CVE-2021-42574를 참조하세요. | Kitploit
도구/GitHubGitHub/maweil/bidi_char_detector
Static AnalysisVulnerability AnalysisCode AnalysisSecret DetectionSupply Chain SecurityMisconfigurationArchived
GitHubmaweil/bidi_char_detector

bidi_char_detector

파일에서 공급망 공격에 악용될 수 있는 유니코드 BIDI 문자의 존재 여부를 확인합니다. CVE-2021-42574를 참조하세요.

저장소 보기
633년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

BIDI 문자 감지기

이 도구는 CVE-2021-42574를 완화하기 위해 공급망 공격에 악용될 수 있는 유니코드 BIDI 문자가 파일에 있는지 확인합니다. 이 도구는 Rust로 작성되었으며 빠르고 쉬운 사용을 위해 작은 (< 3MB) Docker 호환 컨테이너로 배포됩니다.

공격에 대한 설명은 GitHub 블로그 글 또는 공격이 발표된 원본 논문을 참조하세요.

설치

이 패키지는 주로 Docker 컨테이너를 통해 사용하도록 설계되었습니다. 하지만 물론 로컬 설치도 가능합니다. 컴파일에는 최소 Rust 1.56.0이 필요합니다. Rust 2021 에디션을 사용하기 때문입니다. 이 저장소를 클론하고 cargo install --path .를 실행하여 현재 사용자에 대한 바이너리를 설치하세요. 그런 다음 bidi_detector 명령을 실행할 수 있습니다.

사용법

공식 Docker 컨테이너를 통해 도구를 실행하는 것이 아마 시작하기 가장 쉬운 방법입니다. Docker를 통해 실행하려면 다음 명령어로 현재 작업 디렉토리 내의 모든 파일을 스캔할 수 있습니다:

root@kitploit:~
docker run --rm -it -v $(pwd):/data ghcr.io/maweil/bidi_char_detector:latest

시스템에 따라 이 명령을 약간 조정해야 할 수도 있습니다. 예를 들어 podman을 사용하고 SELinux가 활성화된 경우 다음 명령을 대신 시도하세요:

root@kitploit:~
podman run --rm -it -v $(pwd):/data:Z ghcr.io/maweil/bidi_char_detector:latest

설정

기본적으로 모든 파일을 확인합니다. 현재 디렉토리에 바이너리 파일이 있으면 UTF-8이 아닌 파일을 디코딩할 수 없어 명령이 실패합니다. 필요에 따라 명령을 조정하려면 프로젝트 루트에 bidi_config.toml이라는 파일을 배치하세요. 이 저장소에서 예제를 찾을 수 있습니다. 아래 예를 참조하세요. 옵션에 대한 자세한 설명은 예제 아래에 있습니다:

root@kitploit:~
[general]
includes = [ 
    "src/**/*",
    "**/*.patch",
    "**/*.json",
    "**/Dockerfile",
    "test/*.js"
]
excludes = [
    ".git/*",
    "target/*"
]

[display]
show_details = true

일반 설정

이 섹션에는 스캔할 파일 패턴(또는 스캔에서 제외할 패턴)을 지정할 수 있는 두 개의 배열(includes와 excludes)이 포함되어 있습니다. 패턴이 디렉토리 이름 자체가 아닌 디렉토리 내의 파일과 일치하는지 확인하세요. 그렇지 않으면 파일이 스캔되지 않습니다. 모든 파일을 스캔하고 .git 디렉토리만 제외하려면 다음 구성이 효과적입니다:

root@kitploit:~
[general]
includes = [ 
    "**/*"
]
excludes = [
    ".git/*",
]

[display]
show_details = true

대신 소스 파일이 포함된 폴더를 명시적으로 정의하려면 다음 구성 예제가 src 디렉토리의 모든 파일을 스캔합니다(아무것도 무시하지 않음):

root@kitploit:~
[general]
includes = [ 
    "src/**/*"
]
excludes = [
]

[display]
show_details = true

표시 설정

이 섹션에서는 다음 설정을 사용할 수 있습니다:

예시: show_details = true, verbose = true

root@kitploit:~
src/lib.rs - 0 BIDI characters
src/main.rs - 0 BIDI characters
test/example-commenting-out.js - 6 BIDI characters
Found character RLO (Right-to-Left Override), test/example-commenting-out.js:4:3
Found character LRI (Left-to-Right Isolate), test/example-commenting-out.js:4:7
Found character PDI (Pop Directional Isolate), test/example-commenting-out.js:4:20
Found character LRI (Left-to-Right Isolate), test/example-commenting-out.js:4:22
Found character RLO (Right-to-Left Override), test/example-commenting-out.js:6:20
Found character LRI (Left-to-Right Isolate), test/example-commenting-out.js:6:24
Found 6 potentially dangerous Unicode BIDI characters!

예시: show_details = false, verbose = true

root@kitploit:~
src/lib.rs - 0 BIDI characters
src/main.rs - 0 BIDI characters
test/example-commenting-out.js - 6 BIDI characters
Found 6 potentially dangerous Unicode BIDI characters!

예시: show_details = false, verbose = false

root@kitploit:~
test/example-commenting-out.js - 6 BIDI characters
Found 6 potentially dangerous Unicode BIDI characters!

크레딧

관련 BIDI 문자 목록을 포함한 공격 탐지에 대한 모든 공로는 해당 논문의 원저자에게 있습니다. 그들의 연구를 기반으로 작업할 때는 원본 논문을 인용해 주시기 바랍니다.

이 저장소의 test/example-commenting-out.js 파일은 원본 저장소의 commenting-out.js 복사본입니다. 라이선스는 원본 저장소 (MIT 라이선스)를 따릅니다. 여기서는 테스트 목적으로만 사용됩니다.

root@kitploit:~
@article{boucher_trojansource_2021,
    title = {Trojan {Source}: {Invisible} {Vulnerabilities}},
    author = {Nicholas Boucher and Ross Anderson},
    year = {2021},
    journal = {Preprint},
    eprint = {2111.00169},
    archivePrefix = {arXiv},
    primaryClass = {cs.CR},
    url = {https://arxiv.org/abs/2111.00169}
}
도구 다운로드
설정설명선택 사항기본값도입 버전
show_details발견된 BIDI 문자의 line/pos 및 유형을 출력할지 결정합니다 (아래 예시 참조)아니오-v0.1.1
ignore_invalid_data바이너리/UTF-8이 아닌 파일이 감지될 때 오류 메시지를 출력할지 여부예truev0.1.2
verbose의심스러운 문자가 없어도 파일 이름을 출력할지 여부예truev0.1.2