🔓 잘못된 권한 설정 시뮬레이터 KISA A-2 · 잘못된 권한 설정

리소스와 계정이 과도한 권한으로 생성됩니다 — 0777 비밀 파일, GRANT ALL DB 계정, root로 실행되는 앱. 저권한 공격자 계정이 되어 열린 권한이 비밀을 넘겨주는 과정을 확인하세요.

① 취약 호스트: 모두에게 열린 비밀 파일, root로 실행되는 앱 VULNERABLE

배포 과정에서 비밀 파일이 0777(누구나 rwx)로 남았고 서비스가 root로 실행됩니다. 당신은 저권한 www-data 계정으로 로그인되어 있습니다. 동작을 선택해 실행하세요.
경로 / 객체소유자 권한의미
/etc/app/secrets.envroot-rwxrwxrwx (0777)누구나 읽기·쓰기 가능
/etc/app/config.yamlroot-rw-rw-rw- (0666)누구나 덮어쓰기 가능
db: appuser@%—GRANT ALL ON *.*모든 DB 전권 (어디서나)
service: webapp—running as root탈취 시 호스트 전체 장악

② 안전 호스트: 최소 권한 SECURE

비밀 파일은 0640 root:app(소유자만 읽기), 설정은 root 소유 0644(타인 읽기전용), DB 계정은 한 스키마에 대한 범위 한정 권한만(localhost 한정), 서비스는 비권한 계정으로 권한 강하합니다. 동일한 공격 동작이 이제 거부됩니다.

③ 취약 vs 안전 프로비저닝

VULNERABLE
# 과도한 권한 — 누구나 비밀에 접근
chmod 0777 /etc/app/secrets.env      # rwx for world
chmod 0666 /etc/app/config.yaml

# DB: 전권 + 어디서나 접속
CREATE USER 'appuser'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'appuser'@'%';

# 서비스: root 로 상시 구동
ExecStart=/usr/bin/python3 app.py   # User= 미지정 → root
SECURE
# 최소 권한 — 소유자만, 범위 한정
chown root:app /etc/app/secrets.env
chmod 0640 /etc/app/secrets.env      # owner rw, group r
chmod 0644 /etc/app/config.yaml      # others read-only

# DB: 필요한 권한만, localhost 한정
CREATE USER 'appuser'@'localhost';
GRANT SELECT,INSERT,UPDATE,DELETE
  ON appdb.* TO 'appuser'@'localhost';

# 서비스: 비권한 계정으로 권한 강하
User=webapp
NoNewPrivileges=true
ProtectSystem=strict
방어 핵심: 모든 리소스에 최소 권한 적용 — 파일은 0640/0644(0777 금지), DB 권한은 단일 스키마·호스트로 한정, 프로세스는 시작 후 root 권한 강하(setuid/User=). find / -perm -0002로 world-writable 파일을 정기 점검.
⚠️ 교육용 시뮬레이션입니다. 파일 시스템·DB 권한·셸은 모두 페이지 내부 mock이며 실제 파일·DB·프로세스에 접근하지 않습니다.