OpenKAT 1.18 - Sneeuwkat
This release adds report scheduling, which implements periodic report generation: by adding an interval to a report, it will automatically update with the latest information. With our new Dashboarding feature, these reports can be added to custom dashboards.
Dashboard and Report data also have historical versions available. Future versions of the user interface will include moving back and forth in time and comparing these historic versions, highlighting changes and trends. We also included a new HTTP export boefje that you can use to export all objects in the graph to an external API either on an interval (e.g. every hour), or when the OOI is either created or changed, using our new Run-On functionality. This can be used to alert that findings have been created or their score has been updated. There’s also a new S3 backend for Bytes and various new boefjes, normalizers and fixes to bits from our growing community. Thanks! Docs on how to setup S3 for your (new) install can be found here: https://docs.openkat.nl/installation-and-deployment/s3-buckets.html
The language Tamil has been added via the hard work of a community volunteer. Since we have not yet tested it ourselves, it’s currently only available if you add it to the languages list manually. If you want to add a language to OpenKAT, or just help translate smaller parts, please take a look at our weblate: https://hosted.weblate.org/projects/openkat/nl-kat-coordination/ any help is much appreciated!
The Keiko module (formerly used to generate reports Via LaTeX) has been removed as we are now using full html reports that can also be exported as PDF.
In total 30 contributors have made 267 commits to Main in which 1,332 Files where changed.
New Features and Bug fixes
Feature: improve settings and environment logic and phase out redundant environment keys by @Donnype in #3384
feat: adds notification styling and icons by @HeleenSG in #3461
Make the “name” field for plugins mandatory by @Donnype in #3471
Feature/upload multiple files at once to bytes by @Donnype in #3476
Add report scheduler functionality to scheduler by @jpbruinsslot in #3352
Add json download to report export by @Rieven in #3460
feat: multi select dropdown by @HeleenSG in #3446
Add timezone to valid time by @noamblitz in #3429
Exclude OOIs creation from the OOI add form by OOI-types by @Rieven in #3490
Hotfix for normalizer API bug by @Donnype in #3475
fix: toggle styling by @HeleenSG in #3449
Dont yield all snyk findings when no version was found by @noamblitz in #3431
Handle empty normalizer results by @Donnype in #3482
Fix enabling normalizers from Rocky by @Donnype in #3481
Fix report types selection not being overridden by @Rieven in #3436
Add new Boefje by @madelondohmen in #3400
Fix hanging upload of large files by @noamblitz in #3489
Check if the task is still running according to the scheduler before changing the status by @Donnype in #3506
Use the right variable name in the template’s if-statement by @Donnype in #3519
Add regex pattern check to PORTS setting of nmap-ports by @Donnype in #3516
Update xtdb-http-multinode to the latest version by @dekkers in #3523
Updated findings in the findings database by @stephanie0x00 in #3427
remove unneeded column from filtered plugin table view by @underdarknl in #3515
Also delete self-affirming or self-infered objects by @originalsouth in #3498
Support valid_time and the like for queries in xtdb tools by @originalsouth in #3430
Chore: use only Pytest in the boefjes by @Donnype in #3536
Invert findings, add source URLs. by @stephanie0x00 in #3538
Fix JSON line logging by @ammar92 in #3511
Fix xtdb-cli by @originalsouth in #3543
Create boefje variant by @madelondohmen in #3456
make session commit less chatty by @underdarknl in #3544
Fix duplicate OOI references in result in origin by @originalsouth in #3531
a bit more detailed erroring in the scheduler client. by @underdarknl in #3546
Show proper error message instead of stacktrace if boefje API is unreachable by @dekkers in #3550
Fix headings by @madelondohmen in #3528
Feat/bit domain ownership pending by @underdarknl in #3290
Improve boefje runner error messages on container failure by @dekkers in #3548
Translations update from Hosted Weblate by @weblate in #3567
Clean more stale origins by @originalsouth in #3561
Fix Pydantic warnings by @ammar92 in #3557
Prevent race conditions between Octopoes’ event manager and the scheduler from recreating already deleted OOIs through affirmations by @originalsouth in #3564
burpsuite fix by @underdarknl in #3381
Fix boefje schema on Boefje Setup page by @madelondohmen in #3574
Set default findingtype risk in model instead of in bit by @noamblitz in #3562
Add permission that grants access to all organizations by @dekkers in #3532
Add unique constraint to database plugin names by @Donnype in #3556
Feature/add boefje scheduling fields by @Donnype in #3555
Refactor and fix faulty save_origin exception code by @originalsouth in #3577
Dont show manual tasks in normalizer list by @noamblitz in #3580
Update a Boefje by @madelondohmen in #3521
Explicitly use the fork context for multiprocessing to fix running boefjes on macOS by @Donnype in #3576
fix: button style by @HeleenSG in #3565
Use stdlib instead of dateutil to parse ISO datetime by @dekkers in #3590
Do not store the hypothetically produced mime-types always by @Donnype in #3583
Remove old Findings Report by @madelondohmen in #3560
Add ‘set start date’ functionality to scheduler by @jpbruinsslot in #3589
Make API usable by non-admin users and check specific permissions by @dekkers in #3571
fix: button styling by @HeleenSG in #3591
Add interval to Boefje by @madelondohmen in #3579
Add boefje interval and cron check for deadline in scheduler by @jpbruinsslot in #3529
Always redirect to katalogus when enabling plugins by @noamblitz in #3584
Fixes notification alignment by @HeleenSG in #3522
REST API to recalculate bits and clone katalogus settings by @dekkers in #3572
fix: form styling by @HeleenSG in #3588
Remove an erroneously generated request body from an object history GET call in Octopoes’ router by @originalsouth in #3605
RFD 0002: Code of Conduct: Code Reviews by @jpbruinsslot in #3425
Fix grace period is being used instead of interval for boefjes that have interval specified in scheduler by @jpbruinsslot in #3602
Use identifiers on modal triggers and modal component instead of integral trigger by @TwistMeister in #3541
Refactoring for Report Recipe, Report Task Runner and Scheduling by @Rieven in #3597
Handle existing Boefje name by @madelondohmen in #3573
Update boefje interval texts to make functionality more clear by @stephanie0x00 in #3609
Translations update from Hosted Weblate by @weblate in #3610
Feature/sort ooi type clearance level by @HeleenSG in #3300
Feature/report runner integration by @Donnype in #3607
Report Schedules List by @Rieven in #3608
Add s3 functionality in Bytes by @Souf149 in #3505
Implement SonarCloud integrations by @ammar92 in #3001
Fixed references in SonarCloud workflow by @ammar92 in #3620
Update filter unit and integration tests by @jpbruinsslot in #3595
Enable ruff format skip-magic-trailing-comma by @dekkers in #2975
Fixes for xtdb-cli by @originalsouth in #3624
Give python-docker-boefjes the possibility to use modules that are not part of OpenKAT by @Souf149 in #3621
fix tagging list in scheduled_reports_table.html by @underdarknl in #3615
Revert 1b4aed6 by @originalsouth in #3647
Add audit trail logging to boefje crud actions in boefje by @madelondohmen in #3613
use correct error mimetype by @noamblitz in #3646
Update katalogus client, input sanitization / validation by @underdarknl in #3396
Bug fixes for the reports flow by @Rieven in #3630
Remove source link in Findings Report when source is none by @madelondohmen in #3642
add CA bundle env var to dadb boefje schema. by @underdarknl in #3618
Fix nmap-ports regex pattern not allowing 80 by @Donnype in #3651
Fix boefje container image url by @madelondohmen in #3622
Fix description on plugin page when all plugins are enabled by @madelondohmen in #3644
Fix for downloading PDF by @madelondohmen in #3664
Fix sorting plugins list by @Rieven in #3659
fix the boefje id check for uuid’s. A cleaner match regex would probably be better. by @underdarknl in #3665
Fix table in DNS Report by @madelondohmen in #3650
Pass bytes instead of string to BytesClient.upload_raw() by @Donnype in #3670
make some things look better by @Rieven in #3661
Fix/yielded objects by @Donnype in #3669
Add rocky worker service to debian packages by @Donnype in #3619
Update upload_raw.py by @underdarknl in #3645
Translations update from Hosted Weblate by @weblate in #3673
Add plugins to findings report by @Rieven in #3657
Fix jsonb ‘contained by’ query by @jpbruinsslot in #3643
Fix empty vulnerability reports by @madelondohmen in #3662
Silence KATFindingType not found error in JobHandler by @originalsouth in #3686
Github action should trigger if workflow definition changes by @dekkers in #3680
Do not run dh_strip_nondeterminism in Debian packaging by @dekkers in #3674
Fix first order dangling affirmation delete by @originalsouth in #3682
Fix javascript and component template in prod environments by @dekkers in #3672
Add delete schedule functionality for schedules in the scheduler by @jpbruinsslot in #3678
Fix/report naming by @Donnype in #3666
Add search endpoint for schedules for scheduler by @jpbruinsslot in #3695
feat: ✨ add Shodan InternetDB boefje by @zcrt in #2615
Add sterr to output list by @noamblitz in #3649
Rework workflow for variable python version, add python 3.11 by @sigio in #3721
Fixes in Report Overview by @madelondohmen in #3707
Add REST API to list report and download pdf report by @dekkers in #3689
Add start date to report schedule by @madelondohmen in #3701
Edit report recipe by @madelondohmen in #3690
Fix Multi Report recursion error by @Rieven in #3714
Fix report names for scheduled reports by @madelondohmen in #3726
Refactor Multi Report to comply to the new report flow by @Rieven in #3705
Add exception handling to the rest api by @jpbruinsslot in #3708
Add rocky REST API for report recipes by @dekkers in #3746
Fix auth token middleware with wrong format header by @dekkers in #3755
Fix vulnerability chapters in Aggregate table of content by @madelondohmen in #3780
Make systemctl call for kat-rocky-worker conditional by @dekkers in #3782
Fix scheduled Aggregate Report naming by @madelondohmen in #3748
Fixes for dropdowns by @Rieven in #3732
Exclude Report from ooi list by @Rieven in #3768
Fix reports with organization tags by @noamblitz in #3790
Silence staticfiles warning by @dekkers in #3795
Add configurable httpx request timeout and increase default by @dekkers in #3786
fix: Long links within tables by @HeleenSG in #3724
Translations update from Hosted Weblate by @weblate in #3762
Update web system report to make “certificate valid” check positive by @stephanie0x00 in #3798
Add live set (filter/query) to ReportRecipe by @madelondohmen in #3769
Add reports to scheduled table by @madelondohmen in #3787
fix: Adds code element styling by @HeleenSG in #3722
Fix filtered ooi types for reports by @Rieven in #3807
Replace finding description ‘None’ with the id by @madelondohmen in #3806
Button styling by @HeleenSG in #3772
Fix settings boefje settings via system env vars by @dekkers in #3766
Update normalizer texts in katalogus for some normalizers. by @stephanie0x00 in #3821
Add searching and sorting to Findings page by @madelondohmen in #3804
Fix typo in InternetDB boefje name by @dekkers in #3828
Refactor KATalogus client in Rocky by @Donnype in #3717
Check queue size before polling by @Donnype in #3829
Do not fail silently when deleting non-existing objects in octopoes by @Donnype in #3813
Add bulk actions on report overview by @TwistMeister in #3777
Upgrade script notes and fix for 1.16 on Debian by @Donnype in #3824
Bug fix: When opening subreports it throws index error by @Rieven in #3775
Delete log.txt by @underdarknl in #3851
Support a Schedule without a schedule in scheduler by @jpbruinsslot in #3834
Report types listed in a modal @ report plugins by @Rieven in #3718
Skip empty queues in the Rocky worker by @Donnype in #3860
Let local plugins (files) take precedence over database entries by @Donnype in #3858
Limit requesting prior tasks for ranking in scheduler by @jpbruinsslot in #3836
Add configuration setting for number of octopoes workers by @dekkers in #3796
Add start time to scheduled reports by @madelondohmen in #3809
Sub reports for Aggregate Report by @Rieven in #3852
Fix cron for last day of the month by @madelondohmen in #3831
Fixes for empty tables by @madelondohmen in #3844
optimize locking in katalogus.py, reuse available data by @underdarknl in #3752
Enable/disable scheduled reports by @madelondohmen in #3871
Fix rocky katalogus tests and delete unused fixtures by @dekkers in #3884
Change plugins enabling in report flow to checkboxes by @noamblitz in #3747
Let mailserver inherit l1 by @noamblitz in #3704
Ignore specific url parameters when following location headers by @noamblitz in #3856
Add auto_calculate_deadline attribute to Scheduler by @jpbruinsslot in #3869
Fix for task id as valid UUID by @Rieven in #3744
Increase max number of PostgreSQL connections by @dekkers in #3889
Translations update from Hosted Weblate by @weblate in #3870
Update scheduler folder structure by @jpbruinsslot in #3883
Feature/improve rename bulk modal by @TwistMeister in #3885
fix: 🐛 allow boefje completion with 404 by @zcrt in #3893
Create separate finding for Microsoft RDP port by @stephanie0x00 in #3882
Add additional check if task already run for report scheduler by @jpbruinsslot in #3900
Adds loggers to report flow by @madelondohmen in #3872
Fix mula migrations Debian package by @dekkers in #3919
Bug fix: KAT-alogus parameter is now organization member instead of organization code by @Rieven in #3895
Fix call to get_katalogus by @dekkers in #3924
add support for detecting Lame dns delegations on ip ranges by @underdarknl in #3899
Add bgp.jsonl and bgp-meta.json to .gitignore by @dekkers in #3928
Improve the KATalogus /plugins endpoint performance by @Donnype in #3892
Create scheduled report with zero objects selectable by @madelondohmen in #3907
Fix layout issues on scheduled reports page by @TwistMeister in #3930
Add export http boefje by @noamblitz in #3901
Update website_discovery.py by @underdarknl in #3921
add unpkg.com to disallowed hostnames in CSP by @underdarknl in #3927
Dont check for Locations on local Ip’s. by @underdarknl in #3894
fix: 🔨 do not store CDN findings by @zcrt in #3931
Boefje runonce functionality in scheduler by @jpbruinsslot in #3906
Fix report recipe API by @dekkers in #3942
Translations update from Hosted Weblate by @weblate in #3939
Report flaws by @madelondohmen in #3880
Fix typing in more places and configure mypy to follow imports by @dekkers in #3932
Do not let enabling plugins affect the global plugin cache by @Donnype in #3944
fix typos in description.md by @underdarknl in #3952
Add documentation for S3 Support by @Souf149 in #3953
fix/Makes expando row chevron buttons sticky in report history and scheduled reports tables by @TwistMeister in #3954
Move event codes logging to KATalogus client by @Donnype in #3956
Translations update from Hosted Weblate by @weblate in #3969
Add cron parser to make cron human readable. Add “next scan” to object table on boefje detail view by @TwistMeister in #3960
Upsert report recipe in REST API by @dekkers in #3968
Translations update from Hosted Weblate by @weblate in #3984
Fix test_report_runner.py by @originalsouth in #4003
minor changes to onboarding, remove header, make preferred route more visible. by @underdarknl in #3986
Move the NXDomain catch to look at the results now that we dont raise… by @underdarknl in #3997
Add SPF optional machnism qualifier to model and parser. fix Human readable formatting for various mechanisms by @underdarknl in #3999
Changes to schedule all reports, even for once by @Rieven in #3840
Documentation Export HTTP API boefje by @stephanie0x00 in #4030
catch the schema mismatch error and produce an error raw file by @underdarknl in #3995
Fix pagination in the history API by @Donnype in #4041
Fix/remove unneeded lookups for inference params by @underdarknl in #4031
Update dropdown.scss, add scrolling / max height by @underdarknl in #4040
Fix/remove unneeded tree lookups on ooi views by @underdarknl in #4032
Fix/ooi detail fixes by @underdarknl in #4024
Update organization_list and settings page, remove unused stuff, add tags + direct settings link by @underdarknl in #4039
Fix/reuse report ooi entities by @Donnype in #4047
make reference parsing more strict in init.py by @underdarknl in #4065
Add normalizer name to tasklist on object details page, observation table. by @underdarknl in #4034
Feat/plugin selection toggler by @underdarknl in #4063
Report Task List by @Rieven in #4059
Add one-off jobs for report scheduler by @jpbruinsslot in #4045
Remove the keiko report module by @dekkers in #4066
Translations update from Hosted Weblate by @weblate in #4046
Add run-on to Boefje Setup page by @madelondohmen in #4061
Documentation
Docs/update userguide objects tasks members settings by @stephanie0x00 in #3957
Add risk level severities to docs by @stephanie0x00 in #4037
Docs: adding Questions and Configs by @stephanie0x00 in #3975
Docs: adding Questions and Configs by @stephanie0x00 in #3975
Add Kubernetes and Ansible to docs by @stephanie0x00 in #3970
Fix docs target in Makefile by @ammar92 in #3987
Docs: adding Questions and Configs by @stephanie0x00 in #3975
Update intro.rst, fix security email address by @underdarknl in #3846
Update scheduler documentation by @jpbruinsslot in #3692
Update folder structure in scheduler architecture doc by @jpbruinsslot in #4002
Update docs for creating a new Boefje by @madelondohmen in #3540
update readme by @F3licity in #3648
Updates boefje clearances and descriptions by @stephanie0x00 in #3863
Update development tutorial documentation by @allan-firelay in #3611
Add docs for xtdb analyze bits. by @stephanie0x00 in #3688
Docs/add muted findings by @stephanie0x00 in #3699
Update helper text for report names by @madelondohmen in #3616
Update README.rst - Fix guidelines URLs by @Thijs0x57 in #3789
Add descriptions to katalogus by @stephanie0x00 in #3545
Dependency Updates
Bump cryptography from 42.0.8 to 43.0.1 in /bytes by @dependabot in #3473
Bump django from 5.0.10 to 5.0.11 in /rocky by @dependabot in #4025
Bump django from 5.0.9 to 5.0.10 in /rocky by @dependabot in #3940*
Bump SonarSource/sonarcloud-github-action from 3.1.0 to 4.0.0 by @dependabot in #4001
Bump python-multipart from 0.0.9 to 0.0.18 in /bytes by @dependabot in #3925
Remove sigrid workflows by @dekkers in #3920
Update Sphinx and documentation by @ammar92 in #3710
Fix/pin pydicom dependency and revert irrelevant version bumps by @Donnype in #3553
Bump django from 5.0.8 to 5.0.9 in /rocky by @dependabot in #3653
Bump sphinx-rtd-theme from 2.0.0 to 3.0.0 by @dependabot in #3625
Bump waitress from 3.0.0 to 3.0.1 in /octopoes by @dependabot in #3760
Update Wappalyzer by @ammar92 in #3800
Update packages by @ammar92 in #3990
Updates CWE archive to 4.16 by @ammar92 in #3943
Update croniter by @ammar92 in #3767
Updated packages by @ammar92 in #3694
Update Packages by @ammar92 in #3563
Updated packages by @ammar92 in #3898
Update pre-commit and all hooks by @dekkers in #3923
Upgrading
Keiko has been removed. You should uninstall / remove the Keiko package or container.
Containers
When using docker with docker compose, you need to remove keiko from the docker-compose.yml file. You can then use –remove-orphan option to tell docker compose to remove containers that are no longer in the compose file:
docker compose up -d --remove-orphans
Debian packages
If you are using the Scripts we provide to install/upgrade OpenKAT you need to get the latest version that includes the kat-rocky-worker service.
You should also remove the kat-keiko package:
apt purge kat-keiko
Note that if you use the openkat-update.sh script to update to a newer 1.18 version (for example from 1.18.0rc1 to 1.18.0), then the kat-keiko will be installed again because the script will update or install all the packages. In 1.19 this won’t happen because the kat-keiko package will not exist anymore.
Full Changelog
The full changelog can be found on Github.