215. 중요 정보 접근 — 환경변수·.env 파일 접근 탐지

changseop lee·4일 전

시스템 보안 · 취약점

목록 보기
215/450

시스템 보안 · 취약점 › E. 중요 정보 접근 로그 분석 · 15/50편 (전체 215/450)
학습 단계: 중요 파일 접근 이상
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

환경변수는 앱에 자격증명을 주입하는 흔한 방법이라, .env 파일과 /proc//environ이 자격증명 탈취의 표적입니다. 둘 다 평문 시크릿을 담을 수 있어 접근 탐지가 중요합니다.

환경변수 자격증명 노출 경로
 .env 파일:        DB_PASSWORD, API_KEY 등 평문
 /proc/<pid>/environ: 실행 중 프로세스의 환경변수
   → cat /proc/<pid>/environ 로 타 프로세스 시크릿 읽기
 셸 history:       export로 노출된 시크릿

정상: 앱이 .env 로드 / 공격: 쉘로 .env·environ 읽기

특히 /proc/<pid>/environ 접근은 실행 중인 다른 프로세스의 시크릿을 훔치는 기법으로, 은밀합니다.

2. 왜 중요한가

  • .env는 평문 시크릿을 담아, 읽기 접근 한 번으로 다수 자격증명이 노출됩니다.
  • /proc//environ 읽기는 실행 중 프로세스(DB·앱)의 환경변수 시크릿을 탈취합니다.
  • 환경변수 자격증명은 파일 권한만으로 보호가 어려워 접근 탐지가 핵심입니다.

3. 핵심 명령어 / 설정

접근 대상노출위험
.env 읽기평문 시크릿 세트매우 높음
/proc/*/environ프로세스 시크릿높음(은밀)
셸 historyexport 시크릿중간
env/printenv현재 환경중간
systemd env 파일서비스 시크릿높음

4. 실습 (실습 예시)

# 환경변수·.env 접근 탐지 (분석 방법)
# .env 파일 읽기(앱 외)
sudo ausearch -k cred_access -i --start recent 2>/dev/null | grep '\.env' | grep -vE 'comm="(node|python|ruby|php-fpm|docker)"'

# /proc/*/environ 접근(타 프로세스 시크릿 탈취)
sudo ausearch -k recon_environ,cred_access -i --start recent 2>/dev/null | grep 'environ' | tail

5. 정상 상태

$ (.env 접근) (없음 또는 앱 로드만)
$ (environ 접근) (없음)

.env가 앱 프로세스 로드로만 읽히고, /proc/*/environ에 대한 교차 접근이 없는 상태가 정상입니다.

6. 이상 상태

$ (.env 접근)
04:00 comm="cat" auid=www-data /var/www/app/.env
$ (environ 접근)
04:01 comm="cat" auid=devops /proc/1234/environ  (mysqld의 환경변수)
  • .env 직접 읽기 → DB_PASSWORD·API_KEY 등 평문 시크릿 세트 탈취
  • /proc/1234/environ 읽기 → mysqld 프로세스의 환경변수 시크릿 탈취
  • 쉘로 .env·environ 읽기 → 자격증명 탈취 → 정탐

7. 로그 분석 (분석 방법)

환경변수 자격증명 탈취 흐름입니다(가상의 예시 로그).

type=SYSCALL comm="cat" auid=devops key="cred_access"
type=PATH name="/proc/1234/environ"
 → 실행 중 mysqld(pid 1234)의 환경변수 읽기 → DB 자격증명 탈취
[또는] cat /var/www/app/.env → 평문 시크릿 세트
관찰해석
cat .env시크릿 세트 탈취
cat /proc/*/environ프로세스 시크릿
auid=비앱탈취 주체
평문 노출다수 자격증명

.env·environ 읽기는 한 번에 다수 시크릿을 노출하므로 즉시 대응합니다.

8. SOC 관제 포인트

  • 환경변수 자격증명은 .env 파일과 /proc//environ을 통해 노출·탈취됩니다.
  • .env는 평문 시크릿 세트, environ은 실행 중 프로세스의 시크릿을 노출합니다.
  • 정상은 앱 로드 — 쉘의 .env·environ 읽기는 자격증명 탈취 신호입니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_e,sensitive_access,">
  <rule id="104140" level="12">
    <if_sid>104000</if_sid>
    <field name="audit.file" type="pcre2">\.env$|/proc/[0-9]+/environ</field>
    <field name="audit.comm" type="pcre2">^(cat|cp|less|strings|grep|xxd|head|tail)$</field>
    <description>.env/proc environ 접근(환경변수 자격증명 탈취)</description>
    <mitre><id>T1552.001</id><id>T1552.007</id></mitre>
  </rule>
</group>

/proc/self/environ(자기 프로세스)는 정상일 수 있으나 타 pid environ 접근은 위험합니다. 앱 프로세스는 제외합니다.

10. 대응 방법

  1. 초기 확인 — 접근된 .env·/proc environ 대상·주체·방법을 확인합니다.
  2. 범위 확인 — 타 프로세스 environ 교차 접근·평문 시크릿 노출 범위를 확인합니다.
  3. 증거 확보 — 환경변수 접근 이벤트와 노출된 시크릿 범위를 보존합니다.
  4. 차단/조치 — 탈취 정탐이면 세션 종료·관련 시크릿 전면 교체를 진행합니다.
  5. 재발 방지 — .env·environ 접근 탐지를 운영합니다.

11. 핵심 정리

접근 대상노출
.env평문 시크릿 세트
/proc/*/environ프로세스 시크릿
셸 historyexport 시크릿
env/printenv현재 환경
면접 포인트".env·/proc environ은 평문 시크릿 노출 — 쉘 읽기는 자격증명 탈취"

12. 다음 편 예고

다음 편 216. 중요 정보 접근 — 백업·아카이브 파일 접근 탐지 에서는 백업·아카이브 파일 접근을 다루는 백업·아카이브 파일 접근 탐지를 다룹니다.


이전 편: 214. 중요 정보 접근 — 애플리케이션 비밀(secret) 접근 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글