
CVE-2024-3272의 영향을 받는 D-Link 장치에 패치를 적용하세요.
당신은 패치가 없는 D-Link NAS 취약점 CVE-2024-3272에 노출된 92,000명 이상의 사용자1 중 하나인가요?
이 도구는 취약한 장치를 패치하기 위해 익스플로잇 자체를 사용합니다.
1: 참조 섹션의 원본 공개를 참조하세요.
Dinkleberry는 취약한 nas_sharing.cgi 파일을 패치된 버전으로 교체하는 명령을 실행합니다 - NOP로 system() 호출을 덮어씁니다.
/usr/local/modules 폴더(파일이 있는 곳)는 읽기 전용이므로, 대신 /usr/local/config에 복사본이 생성되고 /var/www/cgi-bin의 심볼릭 링크가 더 안전한 버전을 가리키도록 업데이트됩니다.
명령이 실제로 아무것도 실행하지 않으면서도 평소처럼 응답하도록, 저는 system 호출만 NOP 처리하기로 선택했습니다.
[!NOTE] 부팅 시 파일시스템이 플래시에서 다시 로드됩니다. 이 패치를 적용해도 장치를 재부팅할 때까지만 유효합니다. 더 영구적인 해결책을 원한다면 펌웨어를 다시 플래시해야 합니다 - 아마도 Debian으로.
aliask:~/git/dinkleberry$ python3 ./src/main.py -h 10:01:02
usage: dinkleberry [-h] [--telnet] [--kill-telnet] [--test] [--verbose] target
positional arguments:
target Target NAS to patch
options:
-h, --help show this help message and exit
--telnet Start telnet server
--kill-telnet Stop telnet server
--test Test if device is vulnerable
--verbose, -v Set this to print debug messages
선택적 플래그가 없으면 스크립트는 패치를 수행합니다.
장치를 구경만 하고 싶다면 --telnet 명령을 사용하세요. 포트 23에서 telnet 세션을 시작합니다.
이것은 우스울 정도로 안전하지 않지만, 당신의 장치는 이미 우스울 정도로 안전하지 않으니 편리한 셸을 사용하는 것도 나쁘지 않습니다.
[!CAUTION] 이 도구는 사용자 본인의 책임 하에 사용하세요. 실제 장치 소프트웨어를 수정합니다.
다음으로 인한 책임은 지지 않습니다:
- 장치가 작동을 멈추는 경우
- NAS에 저장된 데이터 손실
- 화재 발생
- 당신의 장치를 즐겁게 익스플로잇하던 TA가 화내는 것
nas_sharing.cgi와 libsmbif.so 바이너리에 대한 분석 중 이 장치의 소프트웨어가 매우 취약하다는 것이 분명해졌습니다. 유지보수가 불가능해서 처음부터 다시 작성해야 할 정도로 취약합니다.
nas_sharing.cgi 하나만 봐도 system() 호출이 약 80개 있습니다 - 그중 상당수는 사용자 입력으로 접근할 수 있습니다. 패치할 다른 구멍을 찾기 위해 모두 분석하지는 않았지만, 여기 S급 예시가 하나 있습니다:
/* Why use system() instead of libc fopen/fwrite?
What if you want to write a long string or your filename is long?
Painfully obvious command injection playground 🤦 */
void append_to_file(const char* string, const char* file) {
char s_cmd[1024];
sprintf(s_cmd, "echo %s >> %s", string, file);
system(s_cmd);
return;
}
이런 정신 나간 system 호출 외에도, 막대기로 찔러볼 수 있는 것보다 더 많은 버퍼 오버플로가 있습니다 - 그리고 저는 막대기를 많이 찌를 수 있습니다.
이 CVE는 CISA의 KEV 목록에 있습니다 - 이런 장치를 인터넷에 연결해 두고 있다면, 인터넷에서 분리하세요. 지금 당장.
어쩌면 D-Link의 조언을 따라 EOL 장치를 교체하는 것도 좋겠습니다. 하지만 저는 확실히 D-Link 제품을 사지 않을 것입니다.