482. Security Misconfiguration (보안 설정 오류)

핵심 인사이트 (3줄 요약)

  1. 본질: 보안 설정 오류(Security Misconfiguration)는 개발자가 코드를 완벽하고 안전하게 짰음에도 불구하고, 애플리케이션을 감싸고 있는 웹 서버, DB, 클라우드(AWS S3), 프레임워크의 환경 설정(Configuration)을 디폴트(Default) 값 그대로 방치하거나 귀찮다고 권한을 열어두어 해커에게 무혈입성을 허락하는 허무한 인프라 관리 붕괴 현상이다.
  2. 가치: 아무리 비싼 방탄조끼(시큐어 코딩)를 입어도 머리(인프라 설정)에 철모를 안 쓰면 즉사한다. "admin/admin" 같은 초기 비밀번호 미변경, 디버그 모드(Debug=True) 활성화로 인한 치명적 서버 정보 유출 등, 가장 어이없는 휴먼 에러(Human Error)가 시스템의 가장 큰 붕괴 원인임을 폭로하며 인프라 보안의 경각심을 때린다.
  3. 융합: 인간의 손가락(마우스 클릭)을 믿지 않고, 서버 설정과 클라우드 인프라 자체를 텍스트 코드로 강제하는 IaC(Infrastructure as Code, Terraform 등) 아키텍처와, 이를 젠킨스(CI/CD) 단에서 기계적으로 감시하는 DevSecOps의 린팅(Checkov, TFSec) 기술과 완벽하게 융합되어 자동화된 무결점 방어벽을 완성한다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

  • 개념: Misconfiguration(설정 오류)은 코딩 버그가 아니다. 제품 매뉴얼을 안 읽어서 생기는 사고다.

    • 톰캣(Tomcat) 웹 서버를 처음 깔면 관리자 계정이 admin / admin 이다. 안 바꾸고 라이브 서버에 올렸다.
    • AWS S3 버킷에 고객 사진을 올렸는데, 권한(ACL) 설정을 대충 누르다 Public Read/Write(전 우주인 공개)로 열어버렸다.
    • 에러 페이지가 떴는데, 고객 화면에 친절하게 java.sql.SQLException: SELECT * FROM user_db ... 라며 서버의 속살(코드 구조)과 스택 트레이스(Stack Trace)를 적나라하게 다 까발려준다.
  • 필요성: 해커 입장에서 SQL 인젝션을 하거나 제로데이 취약점을 찾으려면 밤을 새워야 한다(가성비 최악). 하지만 구글 구석구석을 긁어 모으는 해커 봇(Bot)을 돌리면, "어? 이 회사 AWS 설정 빵꾸나서 S3 폴더 열려있네? 패스워드 admin/1234로 쳐지네?"라며 단 1초 만에 테라바이트급 고객 정보를 꿀꺽할 수 있다. **가장 흔하고, 찾기 쉽고, 가장 파괴적인 결과(DB 통째 증발)**를 낳는 이 허무한 헛발질을 막기 위해서는 '인프라 환경 굳히기(Hardening)' 룰이 절대적으로 필요하다.

  • 💡 비유: 보안 설정 오류는 최첨단 군사 기지를 지어놓고 **'비밀번호 0000 놔두기'**와 같습니다. 군사 기지(코드)는 레이저 철조망과 지대공 미사일로 도배되어 천재 스파이도 못 뚫습니다. 그런데 정문 출입 카드 키 비밀번호를 공장 출고 상태인 0000으로 놔두고 바꾼 적이 없습니다. 지나가던 꼬마가 0000 치고 들어가서 미사일(고객 데이터) 발사 버튼을 누르고 도망갑니다. 기지의 튼튼함이 100% 무용지물이 되는 참사입니다.

  • 등장 배경 및 발전 과정:

    1. 초기 설치형 서버의 실수: 아파치(Apache)나 리눅스(Linux)를 수동으로 설치하던 시절, 매뉴얼을 읽기 귀찮은 개발자들이 디폴트 설정(샘플 폴더, 불필요한 포트 오픈)을 켜두어 웜(Worm) 바이러스의 놀이터가 되었다.
    2. 프레임워크의 비대화: Spring, Django 등 프레임워크가 무거워지면서 안에 숨은 설정(Config) 파일이 수천 개로 늘어났다. 개발자가 실수로 에러 로그 상세 출력(Debug Mode) 스위치를 켜둔 채 배포하는 사고가 폭증했다.
    3. 클라우드 복잡성의 시대 (현재): AWS, Azure 시대가 열리며 100개의 클라우드 자원(VPC, IAM, S3) 권한이 거미줄처럼 얽혔다. 마우스 삐끗 한 번에 전 세계로 데이터베이스 권한이 열리는 클라우드 특유의 폭발적 파급력이 이 취약점을 OWASP 영원한 상위권에 강제 박제시켰다.
  • 📢 섹션 요약 비유: 이 취약점은 새로 이사 간 집에 **'건축업자가 놓고 간 마스터키 안 버리고 현관문 앞에 계속 놔두기'**입니다. 내가 아무리 방문(코드)을 잠그고 튼튼한 금고(DB)를 사와도, 건축업자(Apache, AWS 등 프레임워크 제조사)가 편하라고 초기에 만들어둔 범용 마스터키(디폴트 설정/비번)를 쓰레기통에 버리고 나만의 새 자물쇠로 교체(Hardening)하지 않으면 결국 지나가던 도둑에게 1초 만에 털립니다.


Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)

1. 보안 설정 오류가 터지는 3대 폭탄 스위치 (주요 현상)

해커가 스캐너(Scanner) 툴을 켜고 전 세계 인터넷망을 긁을 때 1순위로 얻어걸리는 먹잇감들이다.

  1. 디폴트 계정 & 숨겨진 샘플 파일 (Default & Sample)
    • 현상: 관리자 페이지 URL이 너무 뻔하게 http://company.com/admin 이고, 비번이 admin/password 다. 또는 웹 서버 설치 시 들어있는 샘플(Sample) 앱, 테스트 폴더를 지우지 않아 해커가 그 구멍을 타고 시스템으로 넘어간다.
  2. 과도한 에러 메시지 (Detailed Error Message)
    • 현상: 사용자가 게시판에 특수문자를 넣었더니 화면에 빨간 글씨로 java.sql.SQLException: Syntax error at line 1 in 'SELECT id, pw FROM Users...' 라는 서버의 속살(SQL 문법 구조, 서버 폴더 경로)이 적나라하게 출력된다. 해커는 이 "오답 노트"를 힌트 삼아 완벽한 공격 코드를 10분 만에 완성한다.
  3. 클라우드 스토리지 권한 붕괴 (S3 Bucket Leak)
    • 현상: S3 버킷이나 MongoDB 데이터베이스를 클라우드에 띄웠다. 귀찮아서 방화벽 IP 접근 제어나 인증(IAM)을 끄고 0.0.0.0 (Public) 으로 열어놨다. 며칠 뒤 다크웹에 우리 회사 100만 고객의 엑셀 파일이 100달러에 팔리고 있다.

2. 하드닝 (Hardening / 환경 굳히기) 아키텍처

아키텍트는 이 허술한 문들을 콘크리트로 발라버리는(Hardening) 작업을 인프라에 의무화해야 한다.

  • 최소 권한의 법칙 (Least Privilege): DB 서버는 80포트(웹)로 인터넷과 직접 대화할 필요가 없다. AWS Security Group을 만질 때, DB의 포트(3306)는 "오직 내 웹 서버(WAS) IP 대역 10.0.0.x 에서만 들어올 수 있다"라고 핀셋처럼 쪼아서 막아버린다(방어망).

  • 에러 핸들러 통일 (Global Exception Handler): 백엔드 개발 시, 어떤 미친 에러가 서버 내부에서 터지든(NullPointer, DB Connection), 고객 화면에는 무조건 "요청을 처리할 수 없습니다. (에러코드: E-1934)" 라는 친절하지만 멍청한(정보 없는) 화면만 뱉어내게 전역 필터(@ControllerAdvice)를 박아 넣어 해커의 눈을 완전히 멀게 만든다.

  • 📢 섹션 요약 비유: 에러 메시지를 다 까발려주는 것은, 적군(해커)이 우리 성벽(서버)을 대포로 쐈을 때 성안에서 스피커로 **"아이고! 북서쪽 3번 기둥이 금 갔습니다! 대포 각도를 위로 5도만 더 올려 쏘면 무너집니다!"**라고 해커에게 힌트(디버그 로그)를 친절하게 방송해 주는 완벽한 자살 행위입니다. 진정한 방어는 대포를 맞고 속으로 피를 토하더라도, 밖으로는 "아무 이상 없음"이라는 팻말만 들어 올려 해커를 혼란에 빠뜨리는 포커페이스(Global Error Handler)입니다.


Ⅲ. 융합 비교 및 다각도 분석

1. 보안 설정 오류 (Misconfiguration) vs 안전하지 않은 설계 (Insecure Design)

둘 다 개발자의 "코딩 실수"가 아니지만, 터지는 층(Layer)이 완전히 다르다.

척도보안 설정 오류 (Security Misconfiguration)안전하지 않은 설계 (Insecure Design)
발생 위치코드 밖 (인프라, 서버 환경, 클라우드)코드 안 (비즈니스 로직, 기획 구조)
결함의 정체조일 수 있는 나사(설정 옵션)를 안 조여서 생김애초에 나사를 박을 구멍(설계) 자체를 안 만듦
예시 상황디버그(Debug) 모드를 true로 켜두고 라이브 서버 배포함'비밀번호 찾기' 로직을 폰번호 1개로만 너무 쉽게 뚫리게 기획함
방어 아키텍처인프라 린터(IaC Scan), 서버 하드닝 가이드기획 단계 위협 모델링(Threat Modeling), STRIDE 분석
해결 난이도설정 파일 false 1글자만 바꾸면 끝 (쉽고 빠름)결제 프로세스 시스템 도면 전체를 다 갈아엎어야 함 (최악)

과목 융합 관점

  • 클라우드 / 인프라 (IaC, Infrastructure as Code): 예전엔 사람이 AWS 콘솔 창에 들어가서 마우스로 S3를 만들고 포트를 열었다(ClickOps). 마우스를 삐끗하면 보안 설정 오류(대참사)가 난다. 현대 클라우드는 서버 인프라 자체를 Terraform이나 Ansible 같은 프로그래밍 언어 텍스트 파일(IaC)로 찍어낸다. 인간의 멍청한 마우스 클릭을 없애고 인프라를 형상관리(Git)하는 이 엄청난 융합이 설정 오류를 근원적으로 차단하는 1등 공신이다.

  • 데브옵스 (DevSecOps 파이프라인 방어): IaC로 텍스트화된 인프라 코드는 이제 기계(CI/CD)가 읽고 검사할 수 있다. 개발자가 젠킨스(Jenkins)에 테라폼 코드를 Push 하는 순간, 파이프라인에 달린 Checkov, tfsec 같은 보안 스캐너가 코드를 스캔하고 "삐용! S3 버킷 ACL 속성이 Public으로 되어있네! 너 미쳤냐!"라며 빌드 스위치를 부숴버린다(Quality Gate). 보안 설정이 완벽하지 않으면 클라우드에 서버 자체가 안 뜨게 막아버리는 숨 막히는 물리적 통제 아키텍처다.

  • 📢 섹션 요약 비유: 안전하지 않은 설계는 건물 도면을 그릴 때 현관문 자체를 안 그린(기획 실패) 것입니다. 보안 설정 오류는 현관문도 아주 튼튼한 최고급 철문으로 잘 달아놨는데, 밤에 퇴근할 때 귀찮다고 자물쇠를 잠그지 않고 그냥 열어둔 채(설정 태만) 도망간 것입니다. 아무리 비싼 도어록(방화벽)을 달아놔도 'Lock(잠금 설정)' 버튼을 안 누르면 그냥 고철 덩어리일 뿐입니다.


Ⅳ. 실무 적용 및 기술사적 판단

실무 시나리오

  1. 시나리오 — Swagger UI (API 문서) 라이브 배포의 끔찍한 역풍: 프론트엔드 팀과 소통하려고 스프링 부트(Spring Boot)에 Swagger UI를 달아 API 명세서를 띄워놨다. 백엔드 개발자는 릴리즈 전, 이 Swagger 경로(/swagger-ui.html)를 막는 설정을 깜빡 잊고 그대로 라이브(운영) 서버에 배포했다(Misconfiguration). 해커가 스캐너를 돌리다 우연히 이 URL을 발견했다. 화면에는 우리 회사의 숨겨진 관리자 삭제 API부터 회원 탈퇴 API까지 주소와 파라미터 규격이 100% 친절하게 설명되어 있었다. 해커는 이 공식 메뉴얼(?)을 보며 너무나 편안하게 버튼을 꾹꾹 눌러 DB를 통째로 날려버렸다.

    • 아키텍트의 해결책: 개발/운영 환경 분리(Environment Separation) 옵션의 누락이다. 개발할 때 꿀 빨던 편의 도구(디버그 툴, Swagger, H2 콘솔)는 운영 환경에 넘어가는 순간 해커에게 쥐여주는 스나이퍼 소총 조준경으로 돌변한다. 아키텍트는 스프링의 프로파일(Profile)을 철저히 분리하여, 빌드 스크립트에 if (profile == 'prod') { swagger.enabled = false } 처럼 라이브 서버에서는 테스트 툴과 디버그 로직이 0.1초 만에 흔적도 없이 증발하도록(Dead Code Elimination) 아키텍처 환경 변수를 통제해야 한다.
  2. 시나리오 — 방치된 낡은 포트(Port)와 불필요한 서비스의 그림자: 리눅스(CentOS) 서버를 1대 띄워서 블로그 앱을 돌렸다. 개발자는 80포트와 443(HTTPS) 포트만 방화벽으로 열고 철벽 방어했다고 믿었다. 그런데 한 달 뒤 서버가 랜섬웨어에 털렸다. 원인은 OS를 깔 때 디폴트로 켜져 있던 FTP(21번 포트)와 원격 데스크톱 SSH(22번 포트) 데몬이 서버 구석에서 조용히 돌아가고 있었고, 비밀번호가 초기값 그대로 방치(설정 오류)되어 해커가 이 뒷문(오픈 포트)을 타고 들어온 것이다.

    • 아키텍트의 해결책: 최소 권한 및 표면적 축소(Attack Surface Reduction)의 실패다. 쓰지 않는 것은 무조건 죽여야 한다. 아키텍트는 1) 서버를 세팅할 때 불필요한 기능(FTP, Telnet 등)을 싹 다 비활성화(Disable)하는 하드닝 쉘 스크립트(Hardening Script)나 **Ansible(프로비저닝 자동화 툴)**을 강제하고, 2) 클라우드 앞단 보안 그룹(Security Group)에서 오직 비즈니스에 필요한 443 포트 단 1개만 허용(White-list)하고 나머지는 서브넷 밖으로 나가는 길조차 아예 썰어버리는(Deny All) 극단적 폐쇄주의 인프라를 구축해야 한다.

도입 체크리스트

  • 비즈니스적: "비밀번호 변경 강제화" 프로세스가 매뉴얼화되어 있는가? 수백억짜리 오라클(Oracle) DB나 아파치(Apache) 서버를 도입할 때, 설치 첫날 무조건 깡통(Default) 비밀번호 system/manager 등을 미친 난수 암호로 갈아치우는 절차가 조직 내에 있는가? 기계는 바보라 설치해주면 기본 암호로 숨 쉬고 있다. 이 10초짜리 행동 강령(비밀번호 교체)을 안 지켜서 털리는 기업이 전 세계 해킹 사고의 절반이다.
  • 기술적: 디버그(Debug) 모드와 스택 트레이스(Stack Trace)의 완벽한 억제. 톰캣(Tomcat)이나 Nginx 서버의 설정 파일에 에러 페이지 숨김 설정(error_page 500 /custom_500.html)이 완벽하게 맵핑되어 있는가? 사용자가 미친 파라미터를 던졌을 때 서버가 당황해서 피 토하듯 시스템 경로(C:\app\tomcat\webapps...)를 화면에 쏟아낸다면, 해커는 그 경로를 바탕으로 Directory Traversal (경로 탐색) 해킹을 1분 만에 완성한다. 보안 설정 1원칙은 **"해커의 눈(가시성)을 멀게 하는 것(Information Hiding)"**이다.

안티패턴

  • "우리 서버는 사내 IP 대역만 접근 가능하니까 설정 대충 켜놔도 돼!" (사내망 맹신): 앞단 웹 서버(Web) 방화벽만 믿고, 뒷단에 숨어있는 DB나 레디스(Redis) 서버의 비밀번호를 없애버리고(No Auth) 0.0.0.0(모든 IP 열림) 상태로 방치하는 게으름의 극치. 사내 직원이 털려서 해커가 회사 망 안에 한 발자국만 들어오는 순간(Lateral Movement), 비밀번호 없는 꿀단지 DB 서버 수백 대가 도미노처럼 1초 만에 싹 다 털리는 전멸(Wipe-out) 엔딩을 맞는다. 사내망(내부 서버)끼리 통신할 때도 무조건 비밀번호를 빡빡하게 걸고 포트를 잠그는 것, 그것이 '제로 트러스트(Zero Trust)' 아키텍처의 심장이다.

  • 📢 섹션 요약 비유: 뒷단 DB 비밀번호를 없애는 것은, **'아파트 공동 현관문(웹 방화벽) 비밀번호만 믿고, 우리 집 현관문(DB 서버)은 활짝 열어두고 자는 짓'**과 같습니다. 만약 아파트 주민 중 한 명(내부 직원)이 도둑이거나, 배달부(해커)가 공동 현관문 비밀번호를 몰래 누르고 들어오는 순간, 문이 열려있는 당신 집은 숨도 못 쉬고 즉시 털립니다. 공동 현관이 튼튼하든 말든, 내 집 문(각 개별 서버)에 강철 도어록(설정 굳히기)을 다는 것은 선택이 아닌 필수입니다.


Ⅴ. 기대효과 및 결론

정량/정성 기대효과

구분인간의 수동 마우스 클릭 인프라 세팅 (AS-IS)IaC 코드 기반 자동화 및 Hardening 스캔 강제 (TO-BE)개선 효과
정량개발/운영 환경 설정 갭(Gap)으로 월 5회 릴리즈 롤백Profile 기반 설정 분리 및 환경 변수화로 에러 0건환경(Env) 파편화로 인한 배포 장애(Downtime) 100% 근절
정량클라우드(S3) 관리자 실수로 연 1회 권한 노출 사고Jenkins/Terraform 파이프라인에서 Security Scan Fail 처리휴먼 에러에 의한 클라우드 데이터 대량 유출 사고 0% 락인
정성"이 폴더 열어둬도 되나?" 찜찝함 속에 기도하며 배포Default-Deny(기본 차단) 정책으로 막힌 게 정상이라는 안도감인프라 설정에 대한 무결성 입증 및 아키텍처 통제권 회복

미래 전망

  • CSPM (Cloud Security Posture Management) 관제탑의 시대: 과거엔 개발자가 AWS 설정 화면에 들어가서 옵션 100개를 눈으로 일일이 확인했다. 불가능하다. 이제는 클라우드 벤더사(AWS Security Hub 등)나 외부 CSPM 툴(Prisma Cloud)이 우리 회사의 클라우드 우주 전체를 24시간 감시하며 엑스레이를 쏜다. "어? 개발자 A가 방금 S3 버킷을 Public으로 바꿨네? 이거 위험해(Misconfiguration)!"라고 감지한 뒤, 인간에게 묻지도 않고 1초 만에 권한을 다시 Private으로 강제로 되돌려버리는(Auto-Remediation) '초지능형 자율 방어 인프라' 시대가 열렸다.
  • 보안 설정의 코드화 (Security Policy as Code): 아예 "사내 룰"을 코드로 짠다. OPA(Open Policy Agent) 같은 기술을 통해, 회사 정책으로 "비밀번호가 없는 DB 이미지는 절대 쿠버네티스(K8s)에 띄울 수 없다"는 룰을 JSON 코드로 박아버린다. 멍청한 설정이 담긴 코드가 컨테이너로 올라오려는 찰나, K8s가 "응, 넌 우리 회사 보안 헌법 위반이야. 돌아가"라며 입구컷을 먹이는 정책(Policy) 강제 융합 기술이 클라우드 네이티브의 핵심 트렌드다.

참고 표준

  • OWASP Top 10 (A05: Security Misconfiguration): 아무리 시큐어 코딩을 잘해봤자, 디버그 모드 하나 켜두는 게으름 한 번이면 시스템이 나락으로 떨어진다는 것을 경고하는 인프라 보안의 절대 지표. 2021년 5위로 여전히 맹위를 떨치고 있다. (이전 장 477번)
  • CIS Benchmarks (Center for Internet Security): 전 세계 보안 전문가들이 모여 만든 "리눅스 켤 때 이거 꺼라, 톰캣 띄울 때 이 옵션 켜라"라고 숟가락으로 떠먹여 주는 인프라 서버 굳히기(Hardening) 설정의 글로벌 바이블.

보안 설정 오류(Security Misconfiguration)는 고도의 해킹 기술에 무너지는 장엄한 패배가 아니다. 문단속을 귀찮아한 경비원의 게으름에 전 재산을 도둑맞는 **'가장 치욕스럽고 어이없는 자멸'**이다. 방어의 최전선은 수십억짜리 방화벽(WAF)이나 천재 화이트해커의 뇌가 아니다. 그것은 개발자가 application.yml 파일에서 debug=false 한 줄을 치는 손가락의 신중함, AWS 콘솔에서 Public Access Block 체크박스를 누르는 단 1초의 귀찮음 극복에 달려있다. 기술사는 인간의 이 얄팍한 '귀찮음과 나태함'을 혐오하고 불신해야 한다. 마우스 클릭을 금지하고, 모든 인프라를 코드(IaC)로 찍어내며, 봇(Bot)이 설정 파일의 띄어쓰기 하나까지 검열하여 틀어막는(Linting) 무자비하고 피도 눈물도 없는 '자동화된 기계 제국(DevSecOps)'을 설계하는 것, 그것이 인간의 태만으로부터 1,000만 고객의 생명을 지켜내는 진정한 아키텍트의 위대한 통제술이다.

  • 📢 섹션 요약 비유: 보안 설정 오류를 막는 것은, 비행기 조종석의 **'기계식 이륙 체크리스트 시스템'**과 같습니다. 옛날엔 조종사가 머리로 "날개 확인, 엔진 확인"하고 출발했습니다(까먹으면 추락). 진정한 아키텍처는 조종사가 날개 각도를 올리고(설정 완료) 버튼을 누르지 않으면, 애초에 비행기 조이스틱 락(Lock)이 안 풀려서 물리적으로 엑셀(배포) 자체를 밟을 수 없게 막아버리는 완벽한 기계적 연동(Quality Gate)입니다. 인간의 기억력을 믿지 마십시오. 강제된 프로세스만이 살길입니다.

📌 관련 개념 맵 (Knowledge Graph)

개념 명칭관계 및 시너지 설명
IaC (Infrastructure as Code)인프라 설정 오류를 날려버린 구세주. 사람이 마우스로 서버 설정 옵션을 누르지 않고, 테라폼(Terraform) 코드로 설정값을 박아 Git에 올리면, 기계가 틀린 보안 설정을 스캔하고 막아주는 마법.
안전하지 않은 설계 (A04)헷갈리기 쉬운 쌍둥이. A04가 애초에 "집을 지을 때 문을 안 만든 설계 빵꾸"라면, A05(설정 오류)는 "문도 잘 달았고 자물쇠도 최고급인데 잠그질 않고 잔 빵꾸"다. (이전 장 481번)
하드닝 (Hardening)보안 설정 오류를 쳐내는 구체적인 행위. 쓰지 않는 포트(Port)는 다 닫고, 샘플 파일은 다 지우고, 관리자 비번은 미친 난수로 꼬아서 인프라를 딱딱한 돌덩이(콘크리트)로 굳히는 방어 작업.
데브섹옵스 (DevSecOps)개발자가 설정 파일(Config)을 깃허브에 푸시하는 찰나의 순간, CI 파이프라인에서 "야, 이 설정으로 AWS 올리면 털려!"라고 즉각 빌드를 폭파시키는 자동화 컨베이어 벨트. (이전 장 471번)
제로 트러스트 (Zero Trust)"사내망 안에 있는 디비(DB)니까 비밀번호 0000 놔둬도 돼~"라는 안일한 미친 소리를 박살 내는 철학. 내 뱃속에 있는 장기(내부 서버)들끼리 통신할 때조차 깐깐하게 암호 걸고 쪼아대는 보안의 종착역.

👶 어린이를 위한 3줄 비유 설명

  1. 아빠가 세상에서 제일 튼튼한 금고(시스템)를 사서 보석을 넣었어요! 망치로 때려도 절대 안 부서지는 최고급이었죠.
  2. 그런데 아빠가 너무 귀찮아서 금고 공장 초기 비밀번호인 '0000'을 안 바꾸고 그냥 놔뒀어요.
  3. 지나가던 바보 도둑이 손가락으로 '0000'을 띡띡 누르니까 금고 문이 스르륵 열려버렸죠. 아무리 튼튼한 기계도 주인이 설정을 귀찮다고 엉터리로 해놓으면 1초 만에 털려버리는 허무한 실수를 **'보안 설정 오류'**라고 부른답니다!