alquistmanager / alquist Goto Github PK
View Code? Open in Web Editor NEWAlquist is dialog manager allowing you to create intelligent bots for various purposes.
Home Page: http://www.alquistai.com/
License: GNU General Public License v3.0
Alquist is dialog manager allowing you to create intelligent bots for various purposes.
Home Page: http://www.alquistai.com/
License: GNU General Public License v3.0
Need to change YodaQA command code.
@ermrk, Some sections in how-to file need to be updated to correspond with parser behavior.
Allow to use more complicated logical statements when using ConditionalExists
Alquist crashes with runtime error when being run locally. This happens as soon as I submit a first message via Alquist client.
Here is the log from command line:
A path traversal attack (also known as directory traversal) aims to access files and directories that are stored outside the web root folder. By manipulating variables that reference files with “dot-dot-slash (../)” sequences and its variations or by using absolute file paths, it may be possible to access arbitrary files and directories stored on file system including application source code or configuration and critical system files. It should be noted that access to files is limited by system operational access control (such as in the case of locked or in-use files on the Microsoft Windows operating system).
This attack is also known as “dot-dot-slash”, “directory traversal”, “directory climbing” and “backtracking”.
In the case of Alquist, the path traversal vulnerability can be blamed on incorrect usage of the send_from_directory
Flask call. The vulnerability occurs due to the code snippet shown below
Lines 79 to 82 in 280d99f
Here, since the path
and file
parameters are attacker controlled, the effective directory and filename passed to the send_from_directory
call can be controlled by the attacker leading to a path traversal attack.
The bug can be verified using the proof of concept similar to the one shown below.
curl -i --path-as-is -s -k -X $'GET' \
-H $'Host: 0.0.0.0:5000' -H $'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0' -H $'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H $'Accept-Language: en-US,en;q=0.5' -H $'Accept-Encoding: gzip, deflate' -H $'Connection: close' -H $'Upgrade-Insecure-Requests: 1' \
$'http://0.0.0.0:5000/asd/../../../../../../../../etc/passwd'
This can be easily fixed my restricting the value of file
and path
parameters by a fixed whitelist of possible values.
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
This bug was found using CodeQL by Github
A path traversal attack (also known as directory traversal) aims to access files and directories that are stored outside the web root folder. By manipulating variables that reference files with “dot-dot-slash (../)” sequences and its variations or by using absolute file paths, it may be possible to access arbitrary files and directories stored on file system including application source code or configuration and critical system files. It should be noted that access to files is limited by system operational access control (such as in the case of locked or in-use files on the Microsoft Windows operating system).
This attack is also known as “dot-dot-slash”, “directory traversal”, “directory climbing” and “backtracking”.
In the case of Alquist, the path traversal vulnerability can be blamed on incorrect usage of the send_from_directory
Flask call. The vulnerability occurs due to the code snippet shown below
Lines 69 to 72 in 280d99f
Here, since the path
and file
parameters are attacker controlled, the effective directory and filename passed to the send_from_directory
call can be controlled by the attacker leading to a path traversal attack.
The bug can be verified using the proof of concept similar to the one shown below.
curl -i --path-as-is -s -k -X $'GET' \
-H $'Host: 0.0.0.0:5000' -H $'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0' -H $'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H $'Accept-Language: en-US,en;q=0.5' -H $'Accept-Encoding: gzip, deflate' -H $'Connection: close' -H $'Upgrade-Insecure-Requests: 1' \
$'http://0.0.0.0:5000/client/../../../../../etc/../../../etc/passwd'
This can be easily fixed my restricting the value of file
and path
parameters by a fixed whitelist of possible values.
This bug was found using CodeQL by Github
Is:
if 'counter' not in request_data['context']:
request_data['context']['counter'] = 1
else:
request_data['context']['counter']
Should be:
request_data['context']['counter'] = int(
request_data['context'].get('counter', 0)) + 1
/start
method/session
method/
method. It will take parameters node_name (string), input_text (string) and context (dictionary), response is next_node_name (string), response_text (array of string), updated_context (dictionary)A client using telegram API, with a way to link users to telegram IDs.
Implement structured messages ie buttons.
Find a way to make structured messages interactive on the client side and add support to the main app.
Parser should throw a warning when user wants to transition to a state that is not defined in yaml files.
It would be great to have a way to save context for users using a persistent database or something similar. It would greatly help for personal assistant-type bots.
Create new state type that allows user to add/change/delete context keys and values.
If we put return into transition of conditional state, Alquist breaks.
It would be nice to be able to save some strings directly, for example during a login we want the username.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.