포트폴리오 ↗
루키즈 5기 · 일지›아르고스 개발Day 35 / 46

멘토링 피드백 반영 진단 엔진(1-2, 4-5, 7-4) 개선과 1-6 Docker 크래시 수정

·읽는 시간 약 8분
#argus#security#docker
목차 8개 단원
  1. ·서론
  2. 01[4-5] 일반계정 권한상승
  3. 02[1-2] 삽입 공격 엔진 개선 및 [7-4] 취약한 보안설정 모듈 통합 완료
  4. 03[1-6] 입력 값 크기 및 정확성 검증 오류 모듈 Docker 크래시 수정
  5. 04[2-2] 중요 정보 파일 다운로드 엔드포인트 전파
  6. 05[1-1] XSS / CSRF 도커 환경 경로 매핑 수정 및 UI 개선
  7. 06공통 헬퍼 개선 및 시스템 진척도 모니터링 안정화
  8. 07다음 작업: 채용 특강과 스크린샷 증적 캡처 기능 만들기

서론

"채용 특강(7/9)을 앞두고, 지난 멘토링에서 받은 '넓게 찾고 단계별로 좁히기(Broad-to-Narrow)'와 다중 권한 세션 교차 검증 피드백을 실서버 진단 엔진에 반영했습니다. 7월 7일에는 4-5 일반계정 권한상승(IDOR) 세션 검증 엔진을 만들고, 7-4 취약한 보안설정(OSV 및 TLS 스캔)을 합쳤으며, Slim Docker 환경에서 생기던 1-6 모듈 컴파일 크래시도 고쳤습니다."

2026-07-07 작업 로그 기준으로 4-5 IDOR 다중 세션 검증, 7-4 OSV/TLS 통합, 1-6 슬림 Docker 컴파일 크래시 및 2-2 fan-out 최적화를 반영했습니다.

1. [4-5] 일반계정 권한상승 (IDOR) 다중 세션 진단 개선 및 UI 구성

피드백에서 강조한 다중 권한 교차 확인과 접근제어 우회 확인을 위해, 한 가지 경우만 보던 탐지 방식을 바꿨습니다.

── IDOR 다중 세션 시나리오 로직 옮김

  • 적용 소스: scanner.py, g45_discovery.py, g45_auth.py
  • 동작 방식: 세션 풀(Session Pool)을 바탕으로 [일반 계정 A vs 일반 계정 B vs 권한이 없는 비인증 계정(Anonymous)] 세 가지 요청을 비교합니다. 다른 사람의 게시글, 주문 내역, 관리자 데이터의 식별자(ID)를 바꿔 요청했을 때 백엔드가 제대로 거부하는지 확인합니다.
  • 도커 네트워크 최적화: Docker 구동 환경에 맞추어 네트워크 인터페이스 및 API Base URL 라우팅 매핑 주소를 보완하고, /diagnosis/modules/4-5/ 파이프라인의 스캔 주기를 최적화했습니다.

── 프론트엔드 전용 Findings 패널 연동

  • 적용 파일: G45FindingsPanel.tsx, G45SectionInfoPopover.tsx
  • 가시성 확보: 타인 권한 탈취 결과 및 우회 성공 증적 패킷을 직관적으로 대조할 수 있도록 전용 Findings 패널과 인포 팝오버 UI 컴포넌트를 새롭게 개발하여 대시보드 단에 밀착 배치했습니다.

2. [1-2] 삽입 공격 엔진 개선 및 [7-4] 취약한 보안설정 모듈 통합 완료

단계별로 쿼리를 쌓아 검사하는 1-2 인젝션 엔진을 다듬고, 서버 인프라 취약점을 검사하는 7-4 모듈도 연결했습니다. 여기서의 TLS·OSV 점검은 새 항목 번호가 아니라, 같은 가이드라인 7-4(취약한 보안설정) 아래에서 CORS·보안 헤더에 이어 범위를 더 넓힌 것입니다.

── 백엔드 코어 인프라 진단 엔진 구현 명세

  • 7-4 서버 보안 설정 검사 엔진 레이어 정리:
    • tls_check.py / tlsCheck.py: 타깃 도메인의 SSL/TLS 핸드셰이크 프로토콜을 역추적하여, SK쉴더스 가이드라인 상 명백한 취약점으로 분류되는 레거시 프로토콜(SSLv3, TLS 1.0, TLS 1.1 등) 활성화 유무 및 암호화 스위트(Cipher Suite) 안전성을 판정합니다.
    • port_scan.py: 대상 호스트에 대해 불필요하게 대외 개방되어 공격 표면을 노출하고 있는 미사용 포트 현황을 고속 점검합니다.
    • version_check.py: HTTP 응답 헤더(Server, X-Powered-By 등)에서 배출되는 배너 정보를 파싱하여 소프트웨어 버전을 확인하고, 이름 및 버전 노출 시 즉각 미흡 취약점으로 확정 판정합니다.
    • dependency_check.py (OSV 실시간 연동): 프로젝트 빌드 자산인 gradle_dep_files.json 등을 파싱해 외부 오픈소스 라이브러리 의존성을 자동 수집한 뒤, 구글 OSV(Open Source Vulnerability) 데이터베이스 API를 실시간 상호 참조하여 취약점이 실존하는 위험 버전인지 자동으로 판별해 냅니다.
  • 1-2 삽입 공격 엔진 주입 속도 튜닝:
    • payload_injector.py: SQL/OS 커맨드 인젝션을 유발하는 모의 페이로드 적합성을 다듬고, API 파라미터별 주입 스피드 및 예외 처리 가드를 대폭 리팩터링했습니다.
    • zap_engine.py / zap_scan.py: OWASP ZAP 액티브 스캔 정책 세션과의 연동 옵션을 튜닝하여 탐지 정확도를 상향 제고했습니다.

── 프론트엔드 리포트 대시보드 표출 최적화

  • 적용 파일: DiagnosisPage.tsx, DiagnosisReportPanel.tsx, BuildSourcePanel.tsx
  • 구조화 뷰 적용: DiagnosisReportPanel.tsx 구성을 개편하여 7-4 진단 엔진이 발출한 세부 지표(TLS 버전 현황, 포트 스캔 맵, 취약 라이브러리 CVE 연동 정보)를 직관적인 요약 테이블 및 차트 형태로 표시하도록 변경했습니다. 빌드 소스 패널(BuildSourcePanel.tsx)에는 1-2 및 7-4를 기동 제어할 수 있는 옵션 폼 설정을 최적화했습니다.

3. [1-6] 입력 값 크기 및 정확성 검증 오류 모듈 Docker 크래시 수정

Docker 컨테이너 환경에서 1-6 진단 모듈을 돌릴 때 백엔드 컨테이너가 내려가거나 ImportError가 나서 작업이 멈추던 문제를 고쳤습니다.

── Selenium 의존성 지연 로딩 (Lazy Import) 처리

  • 결함 원인: fuzzer 엔진 내부의 session_manager.py 파일 최상단에서 selenium 패키지가 항상 즉시 import되도록 선언되어 있었습니다. 이로 인해 셀레니움 드라이버가 빌드되어 있지 않은 가벼운 슬림 도커 백엔드 이미지 환경(Slim Docker Image)에서 구동될 시 파일 전체가 컴파일되지 못하고 컴파일 크래시를 유발했던 것으로 규명되었습니다.
  • 해결 조치: 최상단의 항상 import하는 구문을 제거하고, 실제 브라우저 드라이버를 호출하는 기동 시점에만 패키지를 불러오도록 _load_selenium 메서드를 새로 만들어 지연 로딩(Lazy Import) 패턴으로 코드를 수정했습니다. 이로써 해당 패키지가 없는 환경에서도 정상적인 fallback 예외 처리가 작동해 시스템이 다운되지 않습니다.

── 도커 전용 설정 파일 동기화 및 라우팅 적용

  • 적용 파일: config.docker.yaml
  • 설정 동기화: 로컬 설정에만 존재하고 도커 구성에 누락되어 있던 diagnosis_1_6 블록 옵션(skip_zap, skip_spider, skip_selenium 등 변수 팩터)을 동기화 지정하여 컨테이너망에서도 올바른 스킵 제어가 수행되도록 보정했습니다. 컨테이너 외부 호스트 서버로의 트래픽 라우팅을 보장하는 ARGUS_PROBE_HOST 주소 재작성(Rewrite) 규칙을 1-6 스캐너 프로브 단에도 전향 적용했습니다.

4. [2-2] 중요 정보 파일 다운로드 엔드포인트 전파 (Fan-out) 최적화

  • 다중 Base URL 대응 검사 다변화 (transfer_endpoints_service.py): 2-2 파일 다운로드 및 상위 경로 변조 진단 시, 특정 벤더 경로(/user-api)에만 의존하여 쿼리를 송신하던 레거시 정적 재작성(Rewriting) 방식을 모두 폐기했습니다.
  • 검사 커버리지 확장: 대시보드 시스템에 등록된 모든 base-urls Origin 대역으로 탐지된 다운로드 URL 엔드포인트를 동시 전파(Fan out) 넣는 분기 알고리즘을 반영하여 스캔 타깃 커버리지를 대폭 확장했습니다. 도커 내부 프로브 오라우팅을 방지하기 위해 probe_base_url 헬퍼를 결합하여 다운로드 결함 증적의 URL 주소 체계를 표준 정규화했습니다.

5. [1-1] XSS / CSRF 도커 환경 경로 매핑 수정 및 UI 개선

  • 도커 전용 경로 빌드 로직 정리: 도커 컨테이너 내부망 환경 하에서 ZAP 엔진 실행 시 생성되는 파일 정보 및 리포트 저장 경로가 호스트 OS 로컬 환경의 경로 정보와 충돌을 일으키며 불일치하던 싱크 현상을 교정하기 위해, backend/app/config.py 소스코드 단에 도커 컨테이너 전용 경로 동적 빌드 아키텍처를 추가 삽입했습니다.
  • 텍스트 오버플로우 패치: 1-1 진단 완료 후 대시보드 리포트 상세 장표 페이지에서 긴 페이로드 설명문 인입 시 줄바꿈 가드가 깨져 텍스트 렌더링이 잘리던 프론트엔드 스타일 유실 오류를 수정했습니다.

6. 공통 헬퍼 개선 및 시스템 진척도 모니터링 안정화

  • 범용 키워드 아규먼트 (**kwargs) 도입 정리: 중앙 코어 서비스 스케줄러인 run_section 호출부 구문에서 특정 모듈 변수의 부가 인자 전달이 누락될 시 발생하던 심각한 TypeError 예외 마비 현상을 차단하기 위해, 백엔드 핵심 구동 파이프라인 흐름 함수 시그니처 래퍼 전반에 **kwargs 범용 인자 처리 가드를 주입했습니다.
  • 실시간 폴링 레이어 보완 (progress_reporter.py): 1-2 인젝션 및 4-5 IDOR 스캔 등 대량의 패킷 전송으로 인해 장시간 수행되는 백엔드 진단 모듈의 실시간 진척도(Progress) 지표가 대시보드 단으로 끊김 없이 웹소켓 및 폴링 응답을 통해 전달되도록 수신 커넥션 로직의 전송 안정성을 다듬었습니다.

7. 다음 작업: 채용 특강과 스크린샷 증적 캡처 기능 만들기

오늘 멘토링 피드백에 맞춰 핵심 탐지 로직을 고치고 관련 모듈에 반영했으며, Docker 환경의 컴파일 크래시도 수정했습니다. 이로써 검색 엔진과 공통 인프라를 연결하는 스프린트 1 작업을 마쳤습니다.

  • 다음 작업:
    1. 현업 채용 특강 (7/9): 다음 날(7/9)은 플랫폼 개발을 잠시 멈추고, 취업 역량을 위한 채용 특강에 참여할 예정입니다. 대기업 보안 업계 흐름과 HR이 보는 소프트 스킬을 파악해 이후 플랫폼 발표 방향에도 반영합니다.
    2. Playwright 기반 실시간 증적 스크린샷 캡처 모듈 만들기 (7/9 ~ 7/11): 채용 특강 전후에 backend/screenshot/modules/{id}에 동적 증적 캡처 기능을 만듭니다. 스캐너 요청이 진행되는 과정을 찍는 과정(Process) 캡처 모드와, 익스플로잇 성공 시점의 Before-After 화면을 찍는 결과(Result) 캡처 모드를 고를 수 있게 Selenium/Playwright 헤드리스 드라이버 제어 코드를 작성할 예정입니다. 다음 스프린트에도 이어서 진행합니다.
아르고스 개발단계 4 · Day 29–40 · 7 / 12일지 전체 →
  1. Day 29세번째 멘토링
  2. Day 30아르고스(Argus) 진단 모듈 6개 개발
  3. Day 31아르고스(Argus) 진단 모듈 9개 추가와 Progress UI·Docker 라우팅 정비
  4. Day 32아르고스 코어 리팩토링과 1-1·1-2·1-4·1-6 Staging 통합
  5. Day 33아르고스 Staging 통합과 비동기 퍼징 구조 정리
  6. Day 34네번째 멘토링
  7. Day 35멘토링 피드백 반영 진단 엔진(1-2, 4-5, 7-4) 개선과 1-6 Docker 크래시 수정
  8. Day 36IT 채용 시장 변화와 취업·비즈니스 소프트 스킬 정리
  9. Day 37Playwright 증적 스크린샷 (자동: 1-2 · 7-4 · 2-2 / 정리·작업중: 1-6 · 6-1)
  10. Day 38아르고스 Findings·증적 UI 연동, 캡처 확장, ONDE 하드코딩 제거
  11. Day 39아르고스 PDF 결과서 생성과 다운로드
  12. Day 40아르고스 AWS 프라이빗 서브넷 배포 아키텍처와 코드 설정