Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Malicious repository symlinks escape the clone root during indexing

Aperta Adatta ai principianti
#602 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
72/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python
Ambito
backend, security

Direzione di ricerca

Inizia in api/config.py, in corrispondenza di iterate_files, e segui i suoi chiamanti nell’elenco della struttura della wiki e in api/rag/pipeline.py. Verifica il comportamento con un repository contenente un link simbolico che punta fuori dal checkout, quindi conferma che la visita e l’indicizzazione escludano il link simbolico e non possano leggere la sua destinazione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Affected versions: confirmed on main at commit d92819a9 (the project publishes no tagged release).

Summary

The repository walker used for both the wiki-structure listing and the RAG indexer (iterate_files in api/config.py) follows symlinks: it calls is_file(), which dereferences a symlink, with no is_symlink() guard. A submitted repository containing a symlink pointing outside the checkout (to any file the server process can read) has that symlink listed as a normal file, and the indexer's open() on it dereferences straight to the external target.

Details

for p in Path(root_dir).rglob("*"):
    if not p.is_file():   # follows the symlink
        continue
    ...
    results.append(os.path.relpath(p, root_dir)...)
# api/rag/pipeline.py
for relative_path in iterate_files(path, ...):
    file_path = Path(path) / relative_path
    with open(file_path, "r", ...) as f:   # dereferences the symlink
        content = f.read()

POC

(available upon request)

Impact

A repository author can commit a symlink (with an admitted extension) pointing to a server-readable file outside the checkout. Indexing that repository embeds the target's content into the wiki's RAG store, where it can later be recovered through chat/retrieval.

Suggested fix: skip symlinks during traversal rather than following them. A fix is included in the linked PR.

Fix: #596

Lingua principale
Python
Stelle
18.1k
Fork
2k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di AsyncFuncAI/deepwiki-open

Tutte le issue di AsyncFuncAI/deepwiki-open

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.