Skip to content

Commit

Permalink
Merge branch 'main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
GangGreenTemperTatum authored Oct 7, 2024
2 parents 12e8a54 + ca02660 commit 0c272c6
Show file tree
Hide file tree
Showing 252 changed files with 15,921 additions and 885 deletions.
7 changes: 6 additions & 1 deletion .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
Remember, an issue is not the place to ask questions. You can use our [Slack channel](https://github.com/OWASP/www-project-top-10-for-large-language-model-applications/wiki) for that, or you may want to start a discussion on the [Discussion Board](https://github.com/OWASP/www-project-top-10-for-large-language-model-applications/discussions).
Remember, an issue is not the place to ask questions. You can use our [Slack channel](https://github.com/OWASP/www-project-top-10-for-large-language-model-applications/wiki) for that, or you may want to consult the following Slack channels:

- [#project-top10-for-llm](https://owasp.slack.com/archives/C05956H7R8R)
- [#team-llm-web](https://owasp.slack.com/archives/C06RXVCQB1C)
- [#team-llm_diagrams_and_visuals](https://owasp.slack.com/archives/C05L7TW8VCY)
- Each vulnerabilities has its own dedicated Slack channel for discussions in the format of `#team-llm0X`, I.E ([#team-llm03_data_and_model_poisoning](https://owasp.slack.com/archives/C05F7JWFYBU))

### When reporting an issue, please be sure to include the following:
- [ ] Before you open an issue, please check if a similar issue already exists or has been closed before.
Expand Down
105 changes: 105 additions & 0 deletions .github/workflows/issue-triage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
name: Ads - Triage OWASP Top 10 LLM Apps Issues

on:
issues:
types: [opened, labeled, reopened]

env:
BOARD_NAME: "OWASP Top 10 for LLM Applications"
OWNER: ${{ github.repository_owner }}
REPO: ${{ github.event.repository.name }}
ISSUE: ${{ github.event.issue.number }}
PROJECT_TECH_LEAD: "GangGreenTemperTatum"
LLM01_LEAD: "leondz"
LLM02_LEAD: "kenhuangus"
LLM03_LEAD: "GangGreenTemperTatum"
LLM04_LEAD: "kenhuangus"
LLM05_LEAD: "jsotiro"
LLM06_LEAD: "GangGreenTemperTatum"
LLM07_LEAD: "rot169"
LLM08_LEAD: "virtualsteve-star"
LLM09_LEAD: "jsotiro"
LLM10_LEAD: "GangGreenTemperTatum"
PR_LEAD: "faceplate27"
POSTMASTER: "TBC"
TRANSLATIONS: "talesh"
DATA_GATHERING: "emmanuelgjr"
DESIGN: "rossja"
DIAGRAMS: "TBC"
WEB_DEVS: "GangGreenTemperTatum"
SEC_GOVERNANCE: "subzer0girl2"

jobs:
welcomes:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2

- uses: actions/github-script@v7
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: '👋 Thanks for reporting! Please ensure labels are applied appropriately to the issue so that the workflow automation can triage this to the correct member of the core team'
})
triage:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2

- uses: actions/github-script@v7
with:
script: |
try {
const issue = context.payload.issue;
const labels = issue.labels.map(label => label.name);
const assignees = [];
// Label-to-assignee mappings
const labelAssigneeMap = {
'bug': '${{ env.PROJECT_TECH_LEAD }}',
'extension': '${{ env.PROJECT_TECH_LEAD }}',
'llm-other': '${{ env.PROJECT_TECH_LEAD }}',
'diagram': '${{ env.PROJECT_TECH_LEAD }}',
'pdf': '${{ env.DESIGN }}',
'website': '${{ env.WEB_DEVS }}',
'llm-01': '${{ env.LLM01_LEAD }}',
'llm-02': '${{ env.LLM02_LEAD }}',
'llm-03': '${{ env.LLM03_LEAD }}',
'llm-04': '${{ env.LLM04_LEAD }}',
'llm-05': '${{ env.LLM05_LEAD }}',
'llm-06': '${{ env.LLM06_LEAD }}',
'llm-07': '${{ env.LLM07_LEAD }}',
'llm-08': '${{ env.LLM08_LEAD }}',
'llm-09': '${{ env.LLM09_LEAD }}',
'llm-10': '${{ env.LLM10_LEAD }}'
};
// Check labels and assign based on mappings
labels.forEach(label => {
if (labelAssigneeMap[label]) {
assignees.push(...labelAssigneeMap[label]);
}
});
// Remove duplicates from assignees list
// const uniqueAssignees = [...new Set(assignees)];
// Assign the issue to the calculated assignees
await github.rest.issues.addAssignees({
issue_number: issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
assignees: assignees
});
} catch (error) {
console.error(error.message);
process.exit(1);
}
env:
GITHUB_TOKEN: ${{ secrets.ADS_OWASP_LLM_APPS_REPO_TOKEN }}
63 changes: 63 additions & 0 deletions .github/workflows/markdown-to-pdf.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
## Code

name: Markdown to PDF

on:
push:
branches:
- main
paths:
- '1_1_vulns/translations/**'
pull_request:
branches:
- main
paths:
- '1_1_vulns/translations/**'

env:
LANGUAGES: '["de", "it", "pt", "hi", "zh"]' # Add or remove language codes as needed

jobs:
convert-markdown-to-pdf:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20' # Using Node.js version 20

- name: Configure locale
run: |
sudo locale-gen en_US.UTF-8
echo "LC_ALL=en_US.UTF-8" >> $GITHUB_ENV
echo "LANG=en_US.UTF-8" >> $GITHUB_ENV
echo "LANGUAGE=en_US.UTF-8" >> $GITHUB_ENV
- name: Install necessary fonts
run: |
sudo apt-get update
sudo apt-get install -y fonts-noto fonts-noto-cjk fonts-noto-color-emoji fonts-indic fonts-arphic-ukai fonts-arphic-uming fonts-ipafont-mincho fonts-ipafont-gothic fonts-unfonts-core
- name: Install md-to-pdf
run: npm install -g md-to-pdf

- name: Run markdown_to_pdf.sh for each language
run: |
for lang in $(echo $LANGUAGES | jq -r '.[]'); do
./markdown_to_pdf.sh --language $lang
done
working-directory: ./markdown-to-pdf

- name: Get current date and time
id: date
run: echo "date=$(date '+%Y-%m-%d-%H-%M-%S')" >> $GITHUB_ENV

- name: Upload generated PDFs as artifact
uses: actions/upload-artifact@v4
with:
name: pdf-translations-zipfile-${{ env.date }}
path: ./markdown-to-pdf/generated/*.pdf
116 changes: 116 additions & 0 deletions 1_1_vulns/translations/de/LLM00_Introduction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
<div class="frontpage">
<div class="smalllogo">
<img src="/img/OWASP-title-logo.svg"></img>
</div>
<div class="doctitle">
OWASP Top 10 für LLM-Applikationen
</div>
<div class="docversion">
VERSION 1.1
</div>
<div class="docdate">
<b>Veröffentlicht am</b>: 10. Juni 2024
</div>
<div class="doclink">
https://llmtop10.com
</div>
</div>

## Einleitung

### Die Entstehung der Liste

Seit der Einführung von massentauglichen, vortrainierten Chatbots Ende 2022 ist das Interesse an Large Language Models (LLMs) enorm. Unternehmen, die das Potenzial von LLMs nutzen wollen, integrieren sie rasch in ihre Geschäftsprozesse und Angebote für Kunden. Die rasante Geschwindigkeit der Einführung von LLMs hat jedoch dazu geführt, dass die Etablierung umfassender Sicherheitsprotokolle in Verzug geraten ist, sodass viele Anwendungen mit hohen Risiken behaftet sind.

Das Fehlen einer zentralen Ressource, die sich mit diesen Sicherheitsbedenken in Bezug auf LLMs befasst, war unübersehbar. Entwicklerinnen und Entwickler, die mit den spezifischen Risiken von LLMs nicht vertraut waren, standen nur wenige Quellen zur Verfügung, und die Mission von OWASP schien die perfekte Lösung zu sein, um eine sichere Einführung dieser Technologie zu fördern.

### Für wen diese Liste ist

Unsere Hauptzielgruppe sind Entwickelnde, Data Scientists sowie Sicherheitsexpertinnen und -experten, die Anwendungen und Plug-ins basierend auf LLM-Technologien entwerfen und erstellen. Unser Ziel ist es, praktische, umsetzbare und prägnante Sicherheitsleitlinien bereitzustellen, die diesen Fachleuten helfen, sich auf dem komplexen und sich ständig weiterentwickelnden Gebiet der Sicherheit von LLM-Anwendungen zurechtzufinden.

### Die Erstellung der Liste

Das Erstellen der OWASP Top 10 für LLM-Applikationen war ein bedeutendes Unterfangen, das auf der kollektiven Expertise eines internationalen Teams von fast 500 Expertinnen und Experten mit mehr als 125 aktiven Mitgestaltenden basiert. Unsere Mitwirkenden kommen aus den unterschiedlichsten Bereichen, darunter KI-Unternehmen, Sicherheitsfirmen, ISVs, Cloud-Hyperscaler, Hardware-Anbieter und die akademische Welt.

Wir haben einen Monat lang gebrainstormt, potenzielle Schwachstellen vorgeschlagen und dabei 43 verschiedene Bedrohungen formuliert. In mehreren Abstimmungsrunden haben wir diese Vorschläge zu einer prägnanten Liste der zehn kritischsten Schwachstellen verfeinert. Spezialisierte Untergruppen untersuchten jede Schwachstelle und unterzogen sie einer öffentlichen Überprüfung, um sicherzustellen, dass die endgültige Liste so umfassend und nützlich wie möglich war.

### Das Verhältnis zu anderen OWASP Top-10-Listen

Obwohl unsere Liste Gemeinsamkeiten mit den Schwachstellentypen anderer OWASP Top-10-Listen aufweist, wiederholen wir diese Schwachstellen nicht einfach. Stattdessen fokussieren wir uns auf die einzigartigen Auswirkungen dieser Schwachstellen bei der Verwendung von LLMs.

Unser Ziel ist es, die Lücke zwischen allgemeinen Prinzipien der Anwendungssicherheit und den spezifischen Herausforderungen von LLMs zu schließen. Dazu gehört die Untersuchung, wie herkömmliche Schwachstellen in LLMs andere Risiken darstellen oder auf neue Weise ausgenutzt werden können und wie herkömmliche Abwehrmaßnahmen für LLM-basierte Anwendungen angepasst werden müssen.

### Die Zukunft

Version 1.1 der Liste wird nicht die letzte sein. Wir planen, sie regelmäßig zu aktualisieren, um mit den Entwicklungen in der Branche Schritt zu halten. Wir werden mit der erweiterten Community zusammenarbeiten, um den Stand der Technik voranzutreiben und mehr Schulungsmaterial für eine Vielzahl von Anwendungen zu erstellen. Ebenso streben wir auch die Zusammenarbeit mit Standardisierungsorganisationen und Regierungen in Fragen der KI-Sicherheit an. Sie sind herzlich eingeladen, sich unserer Gruppe anzuschließen und einen Beitrag zu leisten.

#### Steve Wilson

Projektleiter, OWASP Top 10 für LLM-Applikationen
[https://www.linkedin.com/in/wilsonsd](https://www.linkedin.com/in/wilsonsd/)
Twitter/X: @virtualsteve

#### Ads Dawson

v1.1 Release Lead & Vulnerability Entries Lead, OWASP Top 10 für LLM-Applikationen
[https://www.linkedin.com/in/adamdawson0](https://www.linkedin.com/in/adamdawson0/)
GitHub: @GangGreenTemperTatum

## Über diese Übersetzung

### Übersetzer

Johann-Peter Hartmann
[https://www.linkedin.com/in/johann-peter-hartmann-92b70a/](https://www.linkedin.com/in/johann-peter-hartmann-92b70a/)

Philippe Schrettenbrunner
[https://www.linkedin.com/in/philippe-schrettenbrunner/](https://www.linkedin.com/in/philippe-schrettenbrunner/)

Bei der Erstellung dieser Übersetzung haben wir uns bewusst dafür entschieden, nur menschliche Übersetzer einzusetzen, in Anerkennung der außerordentlich technischen und kritischen Natur der OWASP Top 10 für LLM-Applikationen. Die oben aufgeführten Übersetzer verfügen nicht nur über ein tiefes Verständnis des Originalinhalts, sondern auch über die sprachliche Kompetenz, um diese Übersetzung sinnvoll zu gestalten.

Talesh Seeparsan
Übersetzungsleiter, OWASP Top 10 für LLM-Applikationen
[https://www.linkedin.com/in/talesh/](https://www.linkedin.com/in/talesh/)

## OWASP Top 10 für LLM-Applikationen

### LLM01: Prompt Injection
Mittels raffinierter Eingaben kann ein Large Language Model manipuliert werden und unbeabsichtigte Aktionen auslösen. Direkte Injections überschreiben System-Prompts, während indirekte Injection Eingaben über externe Quellen manipulieren.

### LLM02: Unsichere Ausgabeverarbeitung
Diese Schwachstelle tritt auf, wenn eine Ausgabe von einem LLM ungeprüft akzeptiert wird, wodurch Backend-Systeme angreifbar werden. Ein Missbrauch kann zu schwerwiegenden Folgen wie XSS (Cross-Site Scripting), CSRF (Cross-Site Request Forgery), SSRF (Server Side Request Forgery), Privilegienerweiterung oder Remote-Code-Ausführung führen.

### LLM03: Poisoning von Trainingsdaten
Dies tritt auf, wenn LLM-Trainingsdaten manipuliert werden und dadurch Sicherheitslücken oder Bias entstehen, die Sicherheit, Performance oder ethisches Verhalten beeinträchtigen. Quellen umfassen Common Crawl, WebText, OpenWebText und Bücher.

### LLM04: Denial of Service des Modells
Angreifende verursachen ressourcenintensive Operationen auf Large Language Models, was zu Beeinträchtigung oder hohen Kosten führt. Die Schwachstelle wird durch die ressourcenintensive Natur von LLMs und die Unvorhersehbarkeit von Benutzereingaben verstärkt.

### LLM05: Schwachstellen in der Lieferkette
Der Lebenszyklus von LLM-Anwendungen kann durch verwundbare Komponenten oder Dienste kompromittiert werden, was Angriffe auf die Sicherheit zur Folge haben kann. Die Verwendung von Datensätzen von Drittanbietern, vortrainierten Modellen und Plug-ins kann zu weiteren Schwachstellen führen.

### LLM06: Offenlegung sensibler Informationen
LLMs können in ihren Antworten vertrauliche Daten preisgeben, was zu unbefugtem Datenzugriff, Datenschutzverletzungen und Sicherheitsverstößen führt. Datenbereinigung und strenge Benutzerrichtlinien sind unerlässlich, um dies zu verhindern.

### LLM07: Unsicheres Plug-in-Design
LLM-Plug-ins können unsichere Eingaben und unzureichende Zugriffskontrollen aufweisen. Dieser Mangel an Anwendungskontrolle erleichtert das Ausnutzen von LLM-Plug-ins und kann zu Folgen wie der Ausführung von Remote-Code führen.

### LLM08: Übermäßige Handlungsfreiheit
LLM-basierte Systeme können Aktionen ausführen, die unbeabsichtigte Folgen haben. Das Problem entsteht, wenn diesen Systemen zu viele Funktionalitäten, zu viele Berechtigungen oder zu viel Autonomie eingeräumt werden.

### LLM09: Übermäßige Abhängigkeit
Systeme oder Personen, die sich zu sehr und unkontrolliert auf LLMs verlassen, können durch falsche oder unangemessene Inhalte, die von LLMs erzeugt werden, mit Fehlinformationen, Fehlkommunikation, rechtlichen Problemen und Sicherheitslücken konfrontiert werden.

### LLM10: Modell-Diebstahl
Dies schließt den unbefugten Zugriff, das Kopieren oder die Weitergabe von geschützten LLM-Modellen ein. Die Folgen sind wirtschaftliche Verluste, gefährdete Wettbewerbsvorteile und potenzieller Zugang zu sensiblen Informationen.


## Datenfluss einer LLM-Anwendung

Das folgende Diagramm zeigt die High-Level-Architektur einer hypothetischen LLM-Anwendung. Im Diagramm sind die Risikobereiche hervorgehoben, die veranschaulichen, wie sich die Punkte der OWASP Top 10 für LLM-Anwendungen mit dem Datenfluss der Anwendung überschneiden.

Dieses Diagramm kann als visueller Leitfaden verwendet werden, um zu verstehen, wie sich die Sicherheitsrisiken großer Sprachmodelle auf das gesamte Anwendungsökosystem auswirken.

![Abb_1](images/fig_5_2.jpg)

##### Abbildung 1: OWASP Top 10 für LLM-Applikationen visualisiert
Loading

0 comments on commit 0c272c6

Please sign in to comment.