서버 프로그램을 실행하였는가? 서버 프로그램을 실행하지 않은 경우 해당 서버 프로그램을 실행시켜 시작하도록 합니다.
서버 프로그램이 성공적으로 시작되었는가? 서버 프로그램이 성공적으로 시작되었다면 서버 콘솔에 다음과 같은 형식의 메시지가 출력됩니다: [23:56:36] [Server thread/INFO]: Done (2.089s)! For help, type "help" 서버 프로그램 시작에 실패했다면 아래 항목 중 해당하는 사항이 있는지 확인합니다:
서버 프로그램이 이미 이전에 한 번 이상 실행되어 시작에 성공한 상태입니다. 이전에 실행된 서버 프로그램들을 모두 종료합니다. 이 때, 서버 콘솔이 보이지 않는 경우라면 프로세스 관리 프로그램(ex. 작업 관리자 등)을 사용하여 서버 프로그램을 종료합니다.
다른 프로그램에서 동일한 TCP/IP 소켓 주소를 사용하고 있는 상태입니다. 해당 주소를 사용하는 프로그램을 종료하거나, 서버 프로그램에서 사용하는 주소가 다른 프로그램에서 사용하는 것과 겹치지 않도록 server-ip 및 server-port 값을 변경합니다.
server.properties 파일에서 값을 잘못 작성한 경우입니다. 아래 항목 중 잘못된 값이 기입된 경우라면 이를 수정합니다:
server-ip - 서버 프로그램의 TCP/IP 소켓 통신에 사용될 IP 주소 값입니다. 네트워크 어댑터(NIC)를 두 개 이상 사용중인 경우(VPN, 프록시 사용 등으로 인한), 특정 네트워크 어댑터에 부여된 IP를 기입하면 해당 네트워크 어댑터를 통해서만 서버에 접속할 수 있도록 합니다. 일반적인 상황[1]이라면 해당 값을 기입하지 않는 것을 권장하며, 값을 비워두면 모든 네트워크 어댑터로부터의 접속을 허용하는 값인 0.0.0.0(IPv4) 혹은 \:\:[2](IPv6)으로 기입한 것과 같이 자동으로 설정됩니다.
server-port - 서버 프로그램의 TCP/IP 소켓 통신에 사용될 TCP 포트 값입니다. 0부터 65535까지의 값을 지정할 수 있으나 일반적으로 Well-known 포트 대역인 0~1023의 포트를 사용하는 것은 권장하지 않습니다.
지난 2022년 3월 25일, Google에서 Chrome 버전 99.0.4844.84 업데이트 패치 내용에 0-day 취약점이라고 불리는 CVE-2022-1096 취약점 방지가 추가되었다. 이후 여러 Chromium 기반 브라우저에서 이 취약점을 방지한 업데이트를 내놓으면서 화제가 된다. Chrome에서 패치된 취약점 CVE-2022-1096 은 3월 23일에 보고되었지만, 이미 잘 알려진 취약점이다.
이 취약점은 Chromium 계열 브라우저에서 사용하는 V8 JavaScript 엔진 내부의 Type Confusion으로 인한 취약점인데, 이를 이용하여 해커가 사용자 컴퓨터의 접근 권한을 얻어 악성코드를 실행할 수 있다.
Chromium 계열 브라우저에서는 이미 업데이트를 내놓았지만, V8 엔진을 사용한 Electron 프레임워크 기반 애플리케이션은 어떨까?
Electron 프레임워크를 사용하는 애플리케이션에서는 해당 취약점에 대한 패치를 배포했다는 소식은 아직 들을 수 없지만, 불확실한 점이 두 가지가 있다. 첫 번째는, Chromium 브라우저에 포함된 V8 엔진의 CVE-2022-1096 취약점이 V8 엔진을 사용하는 다른 프로그램에서 발생할 수 있는지 알 수 없다는 점이고, 두 번째는, 해당 애플리캐이션들이 이미 이전에 V8 엔진에 대한 취약점을 패치했는지 알 수 없다는 점이다.
Electron 프레임워크를 사용하는 프로그램들은 많다. 그 중에서 대중성 있는 애플리케이션 프로그램만 나열하면 Discord, Skype, WhatsApp, Facebook Messenger 와 같은 PC에서 실행되는 메신저 앱 부터 Visual Studio Code, Arduino, Atom 과 같은 개발 프로그램, Spotify, Notion, Twitch, Vampire Survivors 와 같은 애플리케이션이 이에 포함된다.
Node.js, Deno 와 같은 JavaScript 런타임 프로그램도 V8 엔진을 사용한다. Chromium 브라우저와 Electron 프레임워크는 대부분 클라이언트에서 실행되지만, Node.js를 사용하는 서버가 훨씬 더 심각하고 치명적일 수 있다. 해커가 서버에 등록된 사용자들의 개인 정보에 접근하고 악용할 수 있기 때문이다. 이 역시도 불확실한 점이 두 가지가 존재하는데, Electron 프레임워크에서 언급한 대로와 마찬가지이다.