자동 실행

thumb
'''자동 실행''' 또는 '''자동 재생'''은 CD-ROM, DVD-ROM, 플래시 미디어와 같은 이동식 매체가 삽입되면 자동으로 특정한 동작을 수행하도록 하는 기능으로, 현대의 수많은 컴퓨터 운영 체제에 도입되어 있다. '''오토런'''(Autorun)이라고도 한다.
자동 실행은 편리 기능의 하나로 고안된 것이다: 이를테면 디스크가 삽입되면 디스크에 배포되는 소프트웨어가 자동으로 설치 프로그램을 실행한다. 그러나 자동 실행은 사용자가 예측하지 못하는 보안의 위협에 노출된다.
이를테면, 컴퓨터에 물리 접근을 하는 공격자가 몰래 디스크를 삽입하여 소프트웨어를 실행하게 만들 수도 있다. 악성 소프트웨어도 사용자가 예측하지 못하는 상황 속에서 디스크를 통해 배포될 수 있다. 이를테면 오디오 CD가 그렇다. 유명한 상품의 음악 CD라 할지라도 언제나 안전한 것만은 아니다.
=== 자동 실행 ===
마이크로소프트 윈도우에서 자동 실행은 explorer.exe 프로세스를 통해 관리된다.
CD 나 이동식 미디어 안에는 Autorun.inf라는 이름의 파일을 포함할 수 있으며, 루트 디렉터리에 위치해 있다. 이 파일 안에 CD가 삽입되면 수행되는 동작에 대한 내용이 담겨 있다. 이를테면, 설치 프로그램이 실행되는 명령어를 포함한다.
광학 디스크가 광학 디스크 드라이브에 삽입될 때  키를 누르고 있으면 자동 실행은 무시된다. 시스템 관리자에 의해 영구적으로 차단할 수도 있다. 이를테면 레지스트리 키 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\CDRom 안에 있는 "AutoRun" 서브키를 0으로 설정함으로써 실행을 막을 수 있다. 그러나 Autourn이 비활성화되었다 할지라도, 더블 클릭이나  키를 누르거나, 기본 탐색기 환경 메뉴 명령어를 실행하면, 자동 실행 기능이 있는 CD가 삽입되어 있는 경우 "자동 실행"이 동작하게 된다.
==== 탐색기가 자동 실행 기능을 어떻게 감지하는가 ====
탐색기는 레지스트리 키 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveAutoRun를 사용하여 어느 드라이브가 AutoRun을 사용하지 못하는지 결정한다. 비트 0은 드라이브 A:와 일치하며, 비트 1은 드라이브 B:와 일치하는 식이다.
탐색기는 레지스트리 값 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun을 사용하여 AutoRun 기능을 사용할 수 있는 드라이브의 종류를 결정한다. NoDriveTypeAutoRun는 128 (80 십육진)로 된 다음 필드에 숫자를 추가함으로써 계산되는 스위치 값이다.
마지막 값은 어느 드라이브가 AutoRun을 사용할 수 없는지 결정한다. AutoRun을 사용하지 못하는 드라이브는 루트 디렉터리의 AUTORUN.INF를 실행하는 기본 환경 메뉴 항목을 가지고 있지 않다.
AutoRun 기능 플레그를 바꾼 다음, 탐색기를 다시 시작하면 변경된 사항이 적용된다.
 변수 
 숫자 
 십육진수 
 드라이브 종류
 DRIVE_UNKNOWN 
 1 
 0x1
 DRIVE_NO_ROOT_DIR 
 2 
 0x2
 DRIVE_REMOVABLE 
 4 
 0x4 
 디스크는 플로피 디스크, 이동식 카트리지와 같은 드라이브로 꺼낼 수 있다
 DRIVE_FIXED 
 8 
 0x8 
 디스크는 하드 디스크와 같은 드라이브로 꺼낼 수 없다
 DRIVE_REMOTE 
 16 
 0x10 
 네트워크 드라이브
 DRIVE_CDROM 
 32 
 0x20 
 CD-ROM 드라이브
 DRIVE_RAMDISK 
 64 
 0x40 
 램 디스크
==== 마이크로소프트 윈도우 autorun.inf 파일의 예제 ====
 autorun
 open=foo.exe bar
 ;ShellExecute=index.html
 icon=foobar.ico
 shell\configure=구성(&C)...
 shell\configure\command=setup.exe
 shell\install=설치(&I)...
 shell\install\command=setup.exe
 Shell\Option1=Text1
 Shell\Option1\Command=option1.exe
 Shell\Option2=Text2
 Shell\Option2\Command=option2.bat
 label=My backup data
=== 자동 재생 ===
자동 재생은 마이크로소프트 윈도우의 다른 기능의 이름이다. 이를테면 자동 재생이 켜져 있을 때, 사용자가 오디오 CD를 삽입하면, 윈도우 미디어 플레이어가 자동으로 재생을 시작한다. (디스크의 내용물은 자동으로 윈도우 탐색기에 표시된다.) 자동 실행을 사용하지 않게 설정하면, 자동 재생 기능 또한 사용하지 못한다. 윈도우 XP에서 디스플레이 속성 대화 상자에 들어가 보면 자동 재생이라고 불리는 탭이 있다. 이 탭에서 4가지 다른 실행 동작을 고를 수 있다.
* 재생
* 폴더를 열어서 파일 보기
* 동작 없음
* 동작을 수행할지 매번 물어보기
위에 설명한 방식은 계속 마운트되는 드라이브에만 동작한다. 자동 재생 기능이 이동식 기억 장치를 찾지 못하게 할 수 있다. 마이크로소프트 프로그래머들이 다양한 운영 체제의 기능을 레지스트리 수정을 거치지 않고 편집할 수 있도록 개발한 '''트윅UI'''라는 유틸리티를 사용하면 된다. TweakUI에서 "My Computer"를 선택하고 하부 분류 "AutoPlay"의 "Drives"에 들어간다. 그리고 모든 드라이브를 사용하지 않게 하면 자동 재생 기능을 완전하게 사용하지 않게 된다.
윈도우 비스타는 자동 재생 설정을 전역으로 구성할 수 있는 제어판 애플릿을 제공한다. 그러나  키를 누르면, 윈도우 비스타의 기본 설정에 관계 없이 자동 재생이 열린다. 사용자들은  키를 누름으로써 자동 재생을 무효로 만들 수 없다. (윈도우 XP에서는 이것이 가능하였다.) 제어판을 통해서 자동 재생을 끌 수 있다.
=== 자동 실행 비활성화 버그 ===
윈도우 2000부터 윈도우 서버 2008까지 자동 실행 관련 레지스트리 엔트리가 적절히 동작하지 않아 보안 취약성이 발생하였다. 윈도우 95와 윈도우 98은 영향을 받지 않는다.
이 버그는 수많은 보안 업데이트를 통해 해결되었으며 Microsoft Knowledge Base 문서 967715에 자세히 설명되어 있다.
=== 공격 매개체 ===
자동 실행 기능은 때때로 악성 소프트웨어 벡터로 사용되고 있다. 윈도우 비스타 이전까지 CD-ROM 드라이브의 기본 동작은 사용자 확인이나 경고 없이 autorun.inf 파일 지시를 따르는 것이었다. 이는 특정 CD-ROM이 감염 매개체로 활용될 가능성이 있음을 나타낸다.
자동 실행 악성 소프트웨어는 하드 드라이브, 사진 프레임, 기타 디지털 장치를 사용하는 데까지 확대되었다.
윈도우와 맥 두 곳에서, iTunesHelper라는 응용 프로그램은 아이팟이 연결될 때 자동 실행과 비슷한 기능을 사용하면서 아이튠즈를 실행할 수 있다. 이 기능은 아이튠스의 아이팟 섹션의 옵션에서 'Open iTunes when iPod is plugged in'에 체크함으로써 종료할 수 있다.
* MSDN: 자동 실행 켜고 끄기
* MSDN: AutoRun.inf 명령어
분류:시스템 소프트웨어