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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
bidi-guard — 보이지 않는 양방향 유니코드 문자를 코드에서 스캔합니다 (Trojan Source 공격 방지, CVE-2021-42574) | Kitploit
도구/GitHubGitHub/moshe-ship/bidi-guard
Static AnalysisVulnerability AnalysisCode AnalysisDevSecOpsSupply Chain SecurityLearning & Education
GitHubmoshe-ship/bidi-guard

bidi-guard

보이지 않는 양방향 유니코드 문자를 코드에서 스캔합니다 (Trojan Source 공격 방지, CVE-2021-42574)

저장소 보기
54개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

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

bidi-guard

숨겨진 양방향 유니코드 문자를 찾는 코드 스캐너

MIT License Python 3.9+


왜 필요한가

숨겨진 유니코드 양방향 문자는 소스 코드를 실제 실행과 다르게 보이게 만들 수 있습니다. 이는 CVE-2021-42574 — 트로이 소스 공격입니다.

공격자는 텍스트 방향을 뒤집는 문자를 삽입합니다. 코드 리뷰에서는 다음과 같이 보입니다:

root@kitploit:~
access_level = "admin"

하지만 컴파일러는 다음과 같이 봅니다:

root@kitploit:~
access_level = "user"

이 문자들은 보이지 않습니다. 편집기에 표시되지 않고, 리뷰어도 발견하지 못합니다. bidi-guard는 찾아냅니다.

설치

root@kitploit:~
pip install bidi-guard

빠른 시작

root@kitploit:~
# 현재 디렉터리 재귀적으로 스캔
bidi-guard scan .

# 특정 파일 스캔
bidi-guard scan src/auth.py

모든 양방향 유니코드 문자를 찾아 정확한 위치, 컨텍스트 및 심각도를 표시합니다.

명령어

CI 통합

GitHub Action

root@kitploit:~
name: BiDi Guard
on: [push, pull_request]
jobs:
  bidi-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.11"
      - run: pip install bidi-guard
      - run: bidi-guard ci .

Pre-commit

.pre-commit-config.yaml에 추가:

root@kitploit:~
repos:
  - repo: https://github.com/Moshe-ship/bidi-guard
    rev: v0.1.0
    hooks:
      - id: bidi-guard

감지되는 문자

16개의 모든 유니코드 양방향 제어 문자:

높음 또는 심각으로 표시된 문자는 표시되는 텍스트를 적극적으로 재배열할 수 있습니다 — 이는 트로이 소스 공격에 사용되는 문자들입니다.

라이브러리로 사용

root@kitploit:~
from bidi_guard import scan_file, Finding

findings = scan_file("src/auth.py")
for f in findings:
    print(f"{f.char_name} at line {f.line}:{f.col} — severity: {f.severity}")

왜 grep만으로는 안 되는가?

이 문자들은 보이지 않습니다. 말 그대로 보이지 않습니다:

root@kitploit:~
grep "RLO" file.py    # 아무 것도 찾지 못함
cat file.py            # 완전히 정상적으로 보임

bidi-guard는 grep이 찾을 수 없는 것을 보여줍니다: 정확한 문자, 그 위치, 주변 컨텍스트, 심각도 수준, 그리고 그 기능을 알려줍니다. 또한 문자를 제거하여 자동으로 수정할 수도 있습니다.

라이선스

MIT — Musa the Carpenter


사우디 AI 커뮤니티가 제공합니다 — 먼저 아랍인을 위해, 그리고 전 세계를 위해.

도구 다운로드
명령어설명
scan파일에서 bidi 문자를 스캔하고 컨텍스트와 함께 결과 표시
ciCI 모드 — 위험한 문자가 발견되면 0이 아닌 종료 코드 반환
fix파일에서 모든 bidi 문자 제거 (기본적으로 대화형)
explain각 bidi 문자의 기능을 시각적 예제와 함께 설명
init프로젝트를 위한 .bidi-guard.yml 설정 파일 생성
코드 포인트이름약어심각도
U+200E왼쪽에서 오른쪽 표시LRM낮음
U+200F오른쪽에서 왼쪽 표시RLM낮음
U+061C아랍 문자 표시ALM낮음
U+200D너비 없음 연결자ZWJ낮음
U+200C너비 없음 비연결자ZWNJ낮음
U+2066왼쪽에서 오른쪽 고립LRI중간
U+2067오른쪽에서 왼쪽 고립RLI높음
U+2068첫 번째 강한 고립FSI높음
U+2069팝 방향 고립PDI중간
U+202A왼쪽에서 오른쪽 포함LRE중간
U+202B오른쪽에서 왼쪽 포함RLE높음
U+202C팝 방향 서식PDF중간
U+202D왼쪽에서 오른쪽 덮어쓰기LRO높음
U+202E오른쪽에서 왼쪽 덮어쓰기RLO심각
U+2028줄 구분자LS중간
U+2029단락 구분자PS중간