Eine Kamera am Vogelhaus, ein Rechner der erkennt wer da war — und eine Sammlung, die sich von allein fuellt. Zwei neuronale Netze: eines findet den Vogel im Bild, eines bestimmt die Art. 148 heimische Arten, auf Deutschland eingeschraenkt und neu normiert — ohne diese Einschraenkung wird aus einer Kohlmeise eine nordamerikanische Schwesterart. Daraus entsteht ein Sammelalbum: nummerierte Seiten, gefundene Arten in Farbe, fehlende als Schatten, dazu Erstfang, Punkte, Stufen und 15 Abzeichen. Laeuft vollstaendig auf eigener Hardware. Kein Cloud-Dienst, kein Konto, keine Telemetrie; die Bilder verlassen das eigene Netz nicht. Zwei getrennt deploybare Teile: die Sammlung als Django-Anwendung, die Erkennung als eigener Dienst. Der Erkennungs-Dienst fragt selbst an und braucht deshalb weder eine erreichbare Adresse noch einen offenen Port — er laeuft hinter einem gewoehnlichen Router. Dabei: Firmware fuer Raspberry Pi und ESP32-S3, Anbindung an Home Assistant ueber MQTT, Oberflaeche auf Deutsch und Englisch, Einstellungen je Kamera aus dem Browser, und ein Weg fuer Fotos von unterwegs. AGPL-3.0.
52 lines
2.2 KiB
Markdown
52 lines
2.2 KiB
Markdown
# Sicherheitslücken melden
|
|
|
|
**Bitte nicht als öffentliches Issue.** Eine Lücke, die in einem Issue steht,
|
|
ist eine Anleitung, solange sie nicht behoben ist.
|
|
|
|
**Melde sie an <webmaster@gaertner.onl>.** Vogelalbum ist ein Feierabendprojekt
|
|
einer einzelnen Person — eine Antwort kann ein paar Tage dauern. Kommt nach
|
|
einer Woche keine, gern noch einmal nachfassen; dann ist die Nachricht
|
|
untergegangen.
|
|
|
|
Hilfreich in der Meldung:
|
|
|
|
- was betroffen ist (Web-App, Detector, Kameraseite) und welche Fassung
|
|
- wie sich das Verhalten auslösen lässt, möglichst Schritt für Schritt
|
|
- was dabei herauskommt und warum das ein Problem ist
|
|
|
|
Wer eine Lücke meldet und bis zur Behebung nicht veröffentlicht, wird — auf
|
|
Wunsch — im Changelog namentlich genannt. Rechtliche Schritte gegen jemanden,
|
|
der auf diesem Weg und in gutem Glauben meldet, gibt es nicht.
|
|
|
|
## Was unterstützt wird
|
|
|
|
Vogelalbum hat noch keine Version. Gefixt wird der aktuelle Stand von `main`.
|
|
|
|
## Womit zu rechnen ist
|
|
|
|
Ein paar Dinge sind **Absicht** und keine Lücke — damit niemand Zeit damit
|
|
verliert:
|
|
|
|
- **Die Web-App hat keine Benutzerkonten.** Die Sammlung ist zum Ansehen da.
|
|
Wer sie öffentlich stellt, stellt sie öffentlich. Geschützt sind nur der
|
|
Django-Admin und das Upload-Formular.
|
|
- **Die API-Token stehen in Umgebungsvariablen**, nicht in einem Tresor. In
|
|
der Datenbank liegen sie als SHA-256.
|
|
- **Der Detector erreicht die Web-App, nicht umgekehrt.** Die Verbindung geht
|
|
nur in eine Richtung; das ist der Kern des Aufbaus und kein Versehen.
|
|
- **Die Kameraseiten (`pi/`, `esp32cam/`) kennen keine Authentifizierung.** Sie
|
|
gehören ins Heimnetz, nicht ans offene Internet. Wer den Stream nach außen
|
|
gibt, legt selbst etwas davor.
|
|
- **`VOGELALBUM_LIVE_ERLAUBT=0`** schaltet das Live-Bild hart ab, auch gegen einen
|
|
Fehlklick im Admin. Auf einer öffentlichen Instanz gehört die Variable auf
|
|
`0`.
|
|
|
|
## Was dagegen eine Meldung wert ist
|
|
|
|
- Lesen oder Schreiben von Sichtungen ohne gültigen Token
|
|
- Herauskommen aus dem Admin-Login oder aus dem Upload-Formular
|
|
- Pfade, über die sich Dateien außerhalb des Medienordners lesen oder
|
|
schreiben lassen
|
|
- alles, was aus einem hochgeladenen Bild Code macht
|
|
- ein Token, das in Logs, in der Prozessliste oder in der Oberfläche landet
|