VT100 터미널 (모든 최신 터미널 에뮬레이터가 어느 정도 에뮬레이션)은 많은 문제가있는 명령을 지원했지만 최신 에뮬레이터 또는 배포는 문제가 많고 덜 유용한 명령을 비활성화합니다. 잠재적으로 위험한 이스케이프 시퀀스 의 전체 목록은 다음과 같습니다 (어떤 방식으로도 디스플레이를 읽을 수 없도록하는 것은 포함하지 않음).
- rxvt 및 Eterm의 임의 로그 파일 명령은 HD Moore에 의해보고되었습니다 . 이들은 실제로 주요 버그이며, 다행스럽게도 오랫동안 수정되었습니다.
- 리턴 터미널 상태라고도하는 answerback 명령은
ENQ( Ctrl+E)에 의해 호출됩니다 . 사용자가 입력 한 것처럼 터미널에 텍스트를 삽입합니다. 그러나,이 텍스트는 공격자의 통제하에되지 않습니다 : 그것은 터미널의 자신의 이름과 같은 일반적으로 뭔가 xterm나 screen. 내 시스템 (Debian squeeze)에서 xterm은 기본적으로 빈 문자열을 반환합니다 ( answerbackString리소스에 의해 제어 됨 ).
- 장치 속성 보내기 명령
ESC [ c및 친구. 터미널은 숫자와 ASCII 문장 부호 만 포함 할 수 ESC [ … c있는 것으로 응답합니다 …. 이 기능은 일부 터미널 기능을 쿼리하는 방법으로, 대부분 사용되지 않지만 이전 응용 프로그램에서 사용되었을 수 있습니다. 다시 말하지만 터미널의 응답은 사용자 입력과 구별 할 수 없지만 공격자는 제어 할 수 없습니다. 제어 순서는 기능 키처럼 보일 수 있지만 사용자가 비정상적인 구성을 가지고있는 경우에만 가능합니다 (내가 본 일반적인 설정 중 어느 것도 터미널 응답의 접두사 인 유효한 기능 키 이스케이프 시퀀스가 없습니다).
- 다양한 장치 제어 기능 (로 시작하는 DCS 이스케이프
ESC P)
DECUDK전형적인 터미널 에뮬레이터에서 (사용자 정의 키 설정)을 통해 어떤 피해를 입을 수 있는지 모르겠습니다 .
DECRQSS(Request Status String)은 터미널이 이스케이프 시퀀스로 응답하는 또 다른 명령이며 이번에는 \eP; \eP유효한 키 ( Alt+ Shift+ P) 이므로 문제가 될 수 있습니다 .
- : 텀은 두 가지 실험적인 기능을 가지고
ESC P + p …와 ESC P + q …, 취득 및 설정 TERMCAP 문자열을. 설명에서 이것은 최소한 기능 키의 효과를 수정하는 데 사용될 수 있습니다.
- 여러 상태 보고서 명령 :
ESC [ … n(장치 상태 보고서). 터미널은 이스케이프 시퀀스로 응답합니다. 이 이스케이프 시퀀스의 대부분은 기능 키 이스케이프 시퀀스와 일치하지 않습니다. 문제는 다음과 같습니다.보고 대상 ESC [ 6 n은 숫자 시퀀스의 위치 및 숫자 형식 이며 일부 수정 자 에서처럼 보일 수 있습니다.ESC [ x ; y RxyF3
- 창 조작 명령
ESC [ … t.
- 이들 중 일부는 xterm 창의 크기를 조정하거나 아이콘 화하는 등의 작업을 수행 할 수 있습니다.
- 이들 중 일부는 터미널이 이스케이프 시퀀스로 응답하게합니다. 이러한 이스케이프 시퀀스의 대부분은 위험이 적지 만 두 가지 위험한 명령이 있습니다. 터미널 창의 아이콘 레이블과 제목에 대한 답변
ESC [ 2 0 t과 대답을 ESC [ 2 1 t포함하며 공격자는이 명령을 선택할 수 있습니다.
- 최소한 데비안 압축에서는 xterm은 기본적으로이 명령을 무시합니다.
allowWindowOps리소스 를 설정하거나 리소스를 통해 선택적으로 활성화 할 수 있습니다 disallowedWindowOps. Ubuntu 10.04의 그놈 터미널은 기본적으로 제목 응답을 구현합니다. 다른 터미널이나 버전을 확인하지 않았습니다.
- 터미널 제목 또는 아이콘 이름을 설정하는 명령입니다. xterm 및 대부분의 다른 X 터미널에서는 입니다. 화면에서 이스케이프 시퀀스는 입니다. 이 명령에 대한 우려가 과대 평가 된 것으로 나타났습니다. 그들은 약간의 장난을 허용하지만 모든 웹 페이지에는 같은 문제가 있습니다. 수업이 아닌 제목만을 기준으로 창에서 행동하는 것은 신뢰할 수없는 당사자가 이름을 지정한 파일을 열거 나 쉘 스크립트에서 변수 확장을 인용하지 않거나 코에 멍청한 개를 두드리는 것과 비슷합니다 물린 경우 불평하지 마십시오.
ESC ] digit ; title ESC \ESC k title ESC \
나는 바니쉬의 반응이 불분명하다는 것을 안다. 그것은 책임을 바꾸려고하거나 보안 나치 모드 (진정한 여부에 관계없이 모든 보안 문제가 블랙 볼링을 정당화 함) 인 것처럼 느껴집니다.
일반적으로 터미널-응답-탈출의 지혜는 일정한 간격으로 의문을 제기했지만 주요 터미널 에뮬레이션 프로그램 중 어느 것도 이러한 시퀀스를 버리는 데 적합한 것으로 보지 못했을 것입니다. (…)
로그 파일을 작성하는 모든 프로그램을 비난하는 대신, 보안 관점에서 터미널 에뮬레이션 프로그램이 어리석은 일을 멈추게하여이 문제와 다른 보안 문제를 한 번 해결하는 것이 훨씬 생산적입니다. 모든.
많은 답변이 유용한 기능입니다. 응용 프로그램은 커서 위치 및 창 크기와 같은 것을 알아야합니다. 창 제목을 설정하는 것도 매우 유용합니다. 이것에 대한 ioctl호출 에만 전적으로 의존 할 수는 있지만, 이러한 ioctl호출을하고 파일 디스크립터에 전달하는 유닉스 스타일의 텍스트로 변환 하려면 추가 코드와 유틸리티가 필요 했을 것입니다. 이러한 인터페이스를 변경하면 많은 이점이 있지만 많은 작업이 필요합니다.
텍스트 파일에는 제어 문자와 같은 비 인쇄 문자가 포함되지 않아야합니다. 로그 파일은 일반적으로 텍스트 파일이어야합니다. 로그 파일에는 제어 문자가 포함되지 않아야합니다.
파일에 이스케이프 시퀀스가 포함되어 있는지 걱정되는 경우 편집기에서 파일을 열거 나 또는 옵션 less없이 파일을 보거나을 통해보십시오 .-r-Rcat -v