Knowledge Base

CouchDB открыт публично (порт 5984)

CouchDB открыт публично — порт 5984

Категория: Server Hardening · Риск: critical

CouchDB открыт публично — порт 5984

Специфика CouchDB

CouchDB предоставляет REST HTTP API — что делает его особенно уязвимым: **любой браузер и curl** могут обратиться напрямую. Версии до 2.x в «Admin Party» режиме (по умолчанию) не требовали пароля вообще.

# Проверка публичного доступа
curl http://<IP>:5984/
# {"couchdb":"Welcome","version":"3.3.2",...}

# Получить список всех баз данных
curl http://<IP>:5984/_all_dbs
# ["_global_changes","_metadata","_replicator","_users","myapp","users_db"]

# Читать данные напрямую
curl http://<IP>:5984/users_db/_all_docs?include_docs=true
# Возвращает всех пользователей с их данными

Исправление

Закрыть порт

ufw deny 5984

Привязать к localhost

# /opt/couchdb/etc/local.ini
[chttpd]
bind_address = 127.0.0.1
port = 5984

Создать администратора (выйти из Admin Party)

# Через HTTP (до создания админа)
curl -X PUT http://localhost:5984/_node/nonode@nohost/_config/admins/admin \
  -d '"<strong-password>"'

# Или в local.ini:
[admins]
admin = <strong-password>

Docker Compose

services:
  couchdb:
    image: couchdb:3
    environment:
      COUCHDB_USER: admin
      COUCHDB_PASSWORD: <strong-password>
    ports:
      - "127.0.0.1:5984:5984"  # только localhost
    volumes:
      - couchdb_data:/opt/couchdb/data

Связанные проверки