Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .github/img.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
/Task2.iml
/.idea/

deployment.key
deployment2.key
awscredentials.json
2 changes: 2 additions & 0 deletions Python/Flask_Book_Library/.gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
.venv/
__pycache__/

.DS_Store
10 changes: 9 additions & 1 deletion Python/Flask_Book_Library/project/customers/models.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
from project import db, app

def mask_sensitive_info(value, keep_last=2):
if value is None:
return None
if value and len(value) > keep_last:
return '*' * (len(value) - keep_last) + value[-keep_last:]
return value

# Customer model
class Customer(db.Model):
Expand All @@ -22,7 +28,9 @@ def __init__(self, name, city, age, pesel, street, appNo):
print("Getting: " + str(self),flush=True)

def __repr__(self):
return f"Customer(ID: {self.id}, Name: {self.name}, City: {self.city}, Age: {self.age}, Pesel: {self.pesel}, Street: {self.street}, AppNo: {self.appNo})"
masked_pesel = mask_sensitive_info(self.pesel)
masked_appNo = mask_sensitive_info(self.appNo)
return f"Customer(ID: {self.id}, Name: {self.name}, City: {self.city}, Age: {self.age}, Pesel: {masked_pesel}, Street: {self.street}, AppNo: {masked_appNo})"


with app.app_context():
Expand Down
5 changes: 2 additions & 3 deletions Python/Flask_Book_Library/requirements-task.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,10 @@ Flask-SQLAlchemy==3.1.1
Flask-WTF==1.2.1
greenlet==2.0.2
itsdangerous==2.1.2
Jinja2==3.1.2
Jinja2==3.1.6
Mako==1.2.4
MarkupSafe==2.1.3
SQLAlchemy==2.0.21
typing_extensions==4.8.0
Werkzeug==2.3.7
Werkzeug==3.0.6
WTForms==3.0.1
healpy==1.8.0
36 changes: 4 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,6 @@ W wyniku tych operacji na stacji roboczej zostanie uruchomiony kontener dockerow
W przypadku identyfikacji ciągu znaków w logach aplikacji należy zaproponować zmianę, która spowoduje usunięcie zagrożenia, jakim jest wyciek wrażliwych danych.

**O ile to jest możliwe nie ingerujemy w format logów, tylko powodujemy, że zidentyfikowane wrażliwe dane (pesel, adres) będą zamaskowane w logach aplikacji, zamaskowane czyli zamiast wartości `123456890` pojawi się wartość `*********`**
4. **Przesłanie wyników
Wynikiem ćwiczenia ma być przygotowany `Pull Request` z zaimplementowaną poprawką. Informacje jak przygotować `Pull Request` znajdują się [tutaj](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request).

Co musi zawierać `Pull Request`:
- W opisie musi znaleźć się informacja o znalezionej podatności - co to za podatność, gdzie została znaleziona, sposób jej odtworzenia oraz screen udowadniający jej wystąpienie.
- Commit (zmianę w kodzie), która zawiera wprowadzoną zmianę.

## Zadanie 2 - weryfikacja wycieku sekretów

Expand All @@ -85,16 +79,12 @@ W wyniku tych operacji na stacji roboczej zostanie uruchomiony kontener dockerow
1. **Uruchomienie aplikacji gitleaks**
Będąc w katalogu główym (Task2) należy uruchomić aplikacje gitleaks via docker:
```shell
docker run -v ${path_to_host_folder_to_scan}:/path zricethezav/gitleaks:latest detect --source="/path"
docker run -v ${path_to_host_folder_to_scan}:/path zricethezav/gitleaks:latest detect --source="/path" -v
```
gdzie: `path_to_host_folder_to_scan` to ścieżka do pobranego na stację roboczą folderu z repozytorium `Task2`
2. **Weryfikacja działania i wyników**
Zweryfikowanie wyników, które zostały wykryte przez aplikacje gitleaks. Weryfikacja polega na zweryfikowaniu czy gitleaks nie zasygnalizował wykrycia fałszywie pozytywnego, wykryciem fałszywie pozytywnym jest np wystąpienie w kodzie aplikacji słowa `password`, które jest zmienną, a nie przyjmuje narzuconej z góry wartości.
3. **Przesłanie wyników**
Uzupełnienie informacji w `Pull Request'cie` z zadania 1, które zawierają:
- info o tym jak uruchomiono weryfikacje sekretów
- info o tym, co zostało wykryte
- propozycje poprawienia problemu (nie robimy zmiany w kodzie, tylko jednym, dwoma zdaniami piszemy jak należy zarządzać hasłami i sekretami w kodzie źródłowym)


## Zadanie 3 - weryfikacja bezpieczeństwa bibliotek OpenSource wykorzystywanych w projekcie

Expand Down Expand Up @@ -129,26 +119,8 @@ W przypadku Aplikacji napisanej w JAVA wykorzystywany będzie OWASP Dependency C
- Opis podatności (czasem krótki, z linkiem zawierającym więcej informacji)

Należy wybrać jedną wykrytą podatność/pakiet, który zawiera podatność (o najwyższej krytyczności), a następnie wykonać analize możliwości jego wykorzystania. Analiza to nie studium użycia - nie ma potrzeby aby próbować wykorzystać podatność, która została wykryta w danej bibliotece. Chodzi o przeczytanie i zweryfikowanie co powoduje wystąpienie podatności w danym pakiecie typu `W pakiecie X wykryto podatność typu RCE oznaczoną jako Krytyczna. Wykorzystanie podatności jest możliwe po uruchomieniu metody Y z klasy Z. Po analizie w badanej aplikacji klasa Z nie jest wykorzystywana także prawdopodobieństwo wykorzystania tej podatności jest minimalne`
3. **Przesłanie wyników**
Uzupełnienie PRa o informacje:
- Screen z wykonanego skanu (np. wynik komendy)
- Lista wykrytych podatności w tym podaności o Krytyczności Critical
- Opis i analiza dla jednej wybranej podatności o jak najwyższej krytyczności
- Ocena tego, czy przeanalizowana podatnosc musi być usunięta i jeśli tak propozycja wersji pakietu, która nie zawiera podatności

# Podesłanie wyników
* Wyniki powinny być podesłane w formie `Pull Requesta` w sforkowanym projekcie
* Pull Request powinien zawierać wszystkie 3 zadania (jeśli każde zadanie jest w innym PR lub zadanie 1 jest zrobione via PR a dwa pozostałe, które nie zawierają zmian w kodzie zgłoszone jako ISSUE wszystkie linki muszą trafić do zadania w Teams )
* Wynik dla zadania 1 - zmiana w kodzie + opis
* Wynik dla zadania 2 - opis + analiza
* Wynik dla zadania 3 - opis + analiza
* Linki do oceny należy umieścić w zadaniu w Teams

# Punktowanie (ćwiczenie oceniane w skali 0-5 pkt):
- 2 za analizę i poprawnienie podatności związanej z wyciekiem wrażliwych danych
- 1 zadanie 2 - wykrycie i analizę wycieku sekretów
- 2 punkty za analizę podatności OpenSource


## Credits
* Java application - [GitHub Repo](https://github.com/pedrohenriquelacombe/spring-thymeleaf-crud-example)
* Python application - [GitHub Repo](https://github.com/MohammadSatel/Flask_Book_Library)
* Python application - [GitHub Repo](https://github.com/MohammadSatel/Flask_Book_Library)