나는 집에서 웹 서버를 운영중이다. 그러던 중에 2021년 11월경 Log4j 보안 취약점 사태가 벌어졌다. Log4j는 java 진영에서 널리 쓰이는 로깅 툴인데, 치명적인 보안 취약점이 발견된 것이다. (공격자가 특수한 문자열을 집어넣으면, 타겟 서버에 접속할 수 있다.) 나는 java를 쓰지 않으니 문제 없다고만 생각을 했었다.
Log4j 보안 취약점이 퍼졌을 때, 공격자는 무작위 서버들의 접근하여 java를 쓰고 있는지, 취약점에 대응을 하고 있는지 확인할 것이다. 이런 면에서 서버 관리자라면 서버의 정보를 최대한 노출시키지 않는 편이 유리할 것이다. 공격자 입장에서 내 웹서버가 어떠한 정보를 노출하고 있는지 확인해보았다. (이 블로그도 취약점 중 하나이다.)
나는 php, python 웹 개발자로 codeigniter를 많이 써왔다. github에서 받아 디렉토리를 통째로 서버에 올려놓았었다. codeigniter는 index.php를 무조건 타기 때문에 개발할 때, index.php에 내 아이피만 접근 가능하게 해놓았었다. 하지만 여기에 문제가 있었다.

외부에서 composer.json 접근이 가능했던 것이다. 그 외 여러 파일에서도 내가 codeigniter를 사용하고 있는지 확인이 가능했다. (이 문제는 laravel처럼 public에 노출시킬 파일만 이동시켜서 해결) codeigniter 외에도 phpMyAdmin, wordpress, 그누보드에서도 같은 문제가 있었다. (로그인하는 곳만 아이피로 막으면 되는 줄 알았는데, 다른 파일에 접근가능하다. .htaccess 파일을 만들어서 해결)
파일 접근 외에도 404페이지를 보면 codeigniter를 쓰고 있는지 확인이 가능했다.

공격자는 codeigniter에 보안 취약점이 발견되는 동시에 공격자가 알고 있는 모든 타겟에 공격을 시도할 수 있다. (그 타겟 리스트에 오르지 않는 것이 중요하다.) 이것이 오픈소스의 문제점이다. 오픈소스의 CHANGELOG를 확인하여 보안 취약점을 빠르게 확인하고 타겟에 공격이 가능하다.


공격자는 오픈소스의 내부가 어떻게 되어있는지 알 수 있고, 자신만이 알고 있는 취약점이 있을 수 있다. 오픈소스를 쓰는 것만으로도 취약점이 늘어나는 것이다. (그런면에서 언어 자체가 오픈스소인 php는 최악이다.) 자신이 오픈소스를 쓰고 있다면, 내부가 어떻게 동작하고 있는지, 취약점이 없는지, 면밀하게 들여볼 필요가 있다.