Skip to content

Commit ac01e5b

Browse files
authored
Security/#346 dependency upgrade (#347)
* #346: Dependency upgrade * Updated notebook-dependencies * Added documentation about various dependencies of the AI-Lab * Fixed dependencies around ITCD, SLCT affecting notebook script_languages_container and the related notebook-test. Please see file test/notebooks/test_dependencies.txt for details. * Set release date * [CodeBuild]
1 parent 05efb09 commit ac01e5b

File tree

11 files changed

+1219
-1057
lines changed

11 files changed

+1219
-1057
lines changed

.github/actions/prepare_test_env/action.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,12 @@ runs:
2121
shell: bash
2222

2323
- name: Show available disk space
24+
shell: bash
2425
run: df -h
26+
27+
- name: Allow unprivileged user namespaces
2528
shell: bash
29+
run: sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
2630

2731
- name: Setup Python & Poetry Environment
2832
uses: exasol/python-toolbox/.github/actions/python-environment@0.14.0

doc/changes/changes_3.2.0.md

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,40 @@
1-
# AI-Lab 3.2.0 released ????-??-??
1+
# AI-Lab 3.2.0 released 2025-01-16
22

3-
Code name:
3+
Code name: Additional Updates on top of 3.1.0
44

55
## Summary
66

7+
This release updates dependencies and fixes security vulnerabilities on top of 3.1.0.
8+
9+
Fixed vulnerabilities:
10+
11+
* Vulnerabilities in direct dependency `jinja2` version 3.1.4
12+
* #50 Moderate: Jinja has a sandbox breakout through malicious filenames Moderate
13+
* #49 Moderate: Jinja has a sandbox breakout through indirect reference to format method Moderate
14+
* Vulnerabilities in transitive dependency `ansible-core` via `ansible`:
15+
* #44 Moderate, affects versions < 2.17.6, ansible-core Incorrect Authorization vulnerability Moderate
16+
* #47 Low, affects versions < 2.17.7: Ansible-Core vulnerable to content protections bypass Low
17+
* Vulnerabilities in transitive testing dependency `tornado` version 6.4.1 via `pytest-check-links`, `nbconvert`, `nbclient`, `jupyter-client`:
18+
* #46 High: Tornado has an HTTP cookie parsing DoS vulnerability High
19+
20+
Accepted vulnerabilities:
21+
22+
* Vulnerabilities in transitive testing dependency `python-jose` version 3.3.0 via `localstack` as there is no newer version available.
23+
* #31 Critical: python-jose algorithm confusion with OpenSSH ECDSA keys Critical
24+
* #32 Moderate: python-jose denial of service via compressed JWE content Moderate
25+
* Vulnerabilities in transitive dependency `ansible-core` 2.17.7 version via `ansible` as there is no newer version available.
26+
* #43 High: Ansible vulnerable to Insertion of Sensitive Information into Log File High
27+
28+
## Security Issues
29+
30+
* #346: Dependency upgrade
31+
732
## Refactorings
833

934
* #333: Added project short tag in notebook tests
1035
* #339: Improved error reporting when the DockerDB doesn't start properly.
1136

1237
## Bug Fixes
1338

14-
- #335: Fixed DNS resolution in ITDE when running jupyter notebook tests
15-
- #342: Updated the jupysql dependency to resolve the conflict with prettytable
39+
* #335: Fixed DNS resolution in ITDE when running jupyter notebook tests
40+
* #342: Updated the jupysql dependency to resolve the conflict with prettytable

doc/developer_guide/dependencies.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Update dependencies
2+
3+
## Dependencies
4+
5+
AI-Lab contains dependencies on multiple levels and specified in multiple places.
6+
7+
* [pyproject.toml](https://github.com/exasol/ai-lab/blob/main/pyproject.toml) impacting [poetry.lock](https://github.com/exasol/ai-lab/blob/main/poetry.lock)
8+
* Requirements files in ansible scripts
9+
* [jupyter_requirements.txt](https://github.com/exasol/ai-lab/blob/main/exasol/ds/sandbox/runtime/ansible/roles/jupyter/files/jupyter_requirements.txt)
10+
* [notebook_requirements.txt](https://github.com/exasol/ai-lab/blob/main/exasol/ds/sandbox/runtime/ansible/roles/jupyter/files/notebook_requirements.txt)
11+
* Including the notebook-connector and its dependencies SLCT and [slct_manager.py](https://github.com/exasol/notebook-connector/blob/main/exasol/nb_connector/slct_manager.py)
12+
* Dependencies in other ansible scripts, e.g.
13+
* [docker/defaults/main.yml](https://github.com/exasol/ai-lab/blob/main/exasol/ds/sandbox/runtime/ansible/roles/docker/defaults/main.yml)
14+
* [roles/jupyter/defaults/main.yml](https://github.com/exasol/ai-lab/blob/main/exasol/ds/sandbox/runtime/ansible/roles/jupyter/defaults/main.yml)
15+
* AMI base image, see [exasol/ds/sandbox/lib/config.py](https://github.com/exasol/ai-lab/blob/main/exasol/ds/sandbox/lib/config.py)
16+
* [test_dependencies.txt](https://github.com/exasol/ai-lab/blob/main/test/notebooks/test_dependencies.txt): Dependencies of the notebook tests
17+
* GitHub Workflows: no actual dependencies
18+
19+
## Ansible packages
20+
21+
The packages to be installed by Ansible are using pinned versions, e.g. for [docker](../../exasol/ds/sandbox/runtime/ansible/roles/docker/defaults/main.yml).
22+
23+
In case ansible reports "no available installation candidate" for a specific version of a package, please search for newer versions of the package on https://packages.ubuntu.com/ or https://www.ubuntuupdates.org/.
24+
25+
On `ubuntuupdates.org` you can use the [Package Search](https://www.ubuntuupdates.org/package_metas), please only use button "Package Search" or a URL like https://www.ubuntuupdates.org/package_metas?exact_match=1&q=network-manager.
26+
27+
If the update is very new and not yet displayed on packages.ubuntu.com you can use
28+
29+
```shell
30+
sudo apt-get update
31+
sudo apt search <package name>
32+
sudo apt-get install <package name>=<version>
33+
```
34+
35+
Maybe installing the command [chdist](https://manpages.ubuntu.com/manpages/xenial/en/man1/chdist.1.html) could also be helpful, as it allows searching for packages and updates in other versions and distributions of ubuntu than the one installed on your local system.
36+
37+
### Find Packages in All Ansible Scripts
38+
39+
Shell function to find all packages in the ansible scripts
40+
41+
```shell
42+
function xail-ansible-dependencies() {
43+
local DIR=exasol/ds/sandbox/runtime/ansible/roles
44+
for i in $( find "$DIR" -name "*.yml"); do
45+
local DEPS=$(grep -E "[a-z]+=[0-9]" "$i")
46+
if [ -n "$DEPS" ]; then
47+
local LABEL=$(echo $i | sed -e "s|$DIR/||")
48+
echo -e "\n$LABEL:\n$DEPS"
49+
fi
50+
done
51+
}
52+
```

doc/developer_guide/developer_guide.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ the virtual image formats.
1414
4. [Command Line Usage](commands.md)
1515
5. [Testing](testing.md)
1616
6. [Running tests in the CI](ci.md)
17-
7. [Updating Packages](updating_packages.md)
17+
7. [Dependencies and Updating Packages](dependencies.md)
1818
8. [Notebooks](notebooks.md)
1919

20-
20+
Section [Dependencies](dependencies.md) is dedicated to enumerating all places defining dependencies as the AI-Lab contains dependencies on multiple levels and specified in multiple places.

doc/developer_guide/updating_packages.md

Lines changed: 0 additions & 16 deletions
This file was deleted.

exasol/ds/sandbox/runtime/ansible/roles/jupyter/defaults/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ jupyterlab_notebook_folder: "{{ user_home }}/notebooks"
1414

1515
apt_dependencies:
1616
- virtualenv=20.13.0+ds-2
17-
- git=1:2.34.1-1ubuntu1.11
17+
- git=1:2.34.1-1ubuntu1.12
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
scikit-learn==1.5.1 # required for notebook sklearn
2-
matplotlib==3.7.4 # required for notebook sklearn
3-
jupysql==0.10.16 # required for multiple notebooks
1+
scikit-learn==1.6.1 # required for notebook sklearn
2+
matplotlib==3.10.0 # required for notebook sklearn
3+
jupysql==0.10.17 # required for multiple notebooks
44
stopwatch.py>=2.0.1 # also required by ITDE
5-
exasol-notebook-connector==0.3.0
5+
exasol-notebook-connector==0.4.0
66
pickleshare==0.7.5 # See https://github.com/exasol/ai-lab/issues/291 for details.
77
ipyfilechooser==0.6.0 # required for SLC notebooks
8-
ipywidgets==8.1.1 # enable interactive Javascript widgets in the notebooks
8+
ipywidgets==8.1.5 # enable interactive Javascript widgets in the notebooks
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
---
22

33
apt_dependencies:
4-
- rsync=3.2.7-0ubuntu0.22.04.2
4+
- rsync=3.2.7-0ubuntu0.22.04.3

0 commit comments

Comments
 (0)