시스템 보안 · 취약점 › E. 중요 정보 접근 로그 분석 · 15/50편 (전체 215/450)
학습 단계: 중요 파일 접근 이상
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
환경변수는 앱에 자격증명을 주입하는 흔한 방법이라, .env 파일과 /proc//environ이 자격증명 탈취의 표적입니다. 둘 다 평문 시크릿을 담을 수 있어 접근 탐지가 중요합니다.
환경변수 자격증명 노출 경로
.env 파일: DB_PASSWORD, API_KEY 등 평문
/proc/<pid>/environ: 실행 중 프로세스의 환경변수
→ cat /proc/<pid>/environ 로 타 프로세스 시크릿 읽기
셸 history: export로 노출된 시크릿
정상: 앱이 .env 로드 / 공격: 쉘로 .env·environ 읽기
특히 /proc/<pid>/environ 접근은 실행 중인 다른 프로세스의 시크릿을 훔치는 기법으로, 은밀합니다.
| 접근 대상 | 노출 | 위험 |
|---|---|---|
.env 읽기 | 평문 시크릿 세트 | 매우 높음 |
/proc/*/environ | 프로세스 시크릿 | 높음(은밀) |
| 셸 history | export 시크릿 | 중간 |
env/printenv | 현재 환경 | 중간 |
| systemd env 파일 | 서비스 시크릿 | 높음 |
# 환경변수·.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
$ (.env 접근) (없음 또는 앱 로드만)
$ (environ 접근) (없음)
.env가 앱 프로세스 로드로만 읽히고, /proc/*/environ에 대한 교차 접근이 없는 상태가 정상입니다.
$ (.env 접근)
04:00 comm="cat" auid=www-data /var/www/app/.env
$ (environ 접근)
04:01 comm="cat" auid=devops /proc/1234/environ (mysqld의 환경변수)
환경변수 자격증명 탈취 흐름입니다(가상의 예시 로그).
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 읽기는 한 번에 다수 시크릿을 노출하므로 즉시 대응합니다.
<!-- 실습 예시 룰: 적용 전 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 접근은 위험합니다. 앱 프로세스는 제외합니다.
| 접근 대상 | 노출 |
|---|---|
| .env | 평문 시크릿 세트 |
| /proc/*/environ | 프로세스 시크릿 |
| 셸 history | export 시크릿 |
| env/printenv | 현재 환경 |
| 면접 포인트 | ".env·/proc environ은 평문 시크릿 노출 — 쉘 읽기는 자격증명 탈취" |
다음 편 216. 중요 정보 접근 — 백업·아카이브 파일 접근 탐지 에서는 백업·아카이브 파일 접근을 다루는 백업·아카이브 파일 접근 탐지를 다룹니다.
이전 편: 214. 중요 정보 접근 — 애플리케이션 비밀(secret) 접근 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점