GithubHelp home page GithubHelp logo

bbva / apicheck Goto Github PK

View Code? Open in Web Editor NEW
264.0 21.0 64.0 19.97 MB

The DevSecOps toolset for REST APIs

Home Page: https://bbva.github.io/apicheck/

License: Apache License 2.0

Python 69.67% Shell 3.20% Dockerfile 2.10% JavaScript 1.78% TypeScript 1.14% Go 22.11%
security hacking api devops secdevops owasp devsecops rest-api rest toolset

apicheck's People

Contributors

cesargallego avatar cr0hn avatar dependabot[bot] avatar hhurtado avatar ioggstream avatar jorgheymans avatar luissaiz avatar mbarnach avatar next-cesargallego avatar nilp0inter avatar panchoh avatar rtcms avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apicheck's Issues

at-manage doesn't work as documented

Following the documentation I can't produce a new tool:

nil at xan in ~/Project/apicheck/apicheck/apicheck/tools (master) (apicheck-srmIl9AW) 
$ at-manage create-tool replay
usage: at-manage create-tool [-h] --dest DEST name
at-manage create-tool: error: the following arguments are required: --dest/-d

nil at xan in ~/Project/apicheck/apicheck/apicheck/tools (master) (apicheck-srmIl9AW) 
$ at-manage create-tool -d replay replay
usage: at-manage [-h] -C DB_CONNECTION_STRING
                 [--log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}]
                 {api,create-tool,definition} ...
at-manage: error: the following arguments are required: -C/--connection-string

nil at xan in ~/Project/apicheck/apicheck/apicheck/tools (master) (apicheck-srmIl9AW) 
$ at-manage -C sqlite:///lala create-tool -d replay replay
Traceback (most recent call last):
  File "/home/nil/.local/share/virtualenvs/apicheck-srmIl9AW/bin/at-manage", line 11, in <module>
    load_entry_point('apicheck', 'console_scripts', 'at-manage')()
  File "/home/nil/Project/apicheck/apicheck/apicheck/tools/manage/cli.py", line 71, in cli
    running_config = config(**cli_config)
TypeError: run() got an unexpected keyword argument 'db_connection_string'

As per the HTTP RFC, headers and query params can be sent multiple times

As of now, we assumed that both query params and headers could be informed only once (per request). @nilp0inter brought some light into this, and clarified that the HTTP RFC clearly speficies the opposite.

We have to update at-proxy as well as ac-replay to handle these cases. Right now they will fail if multiple headers and/or query params are used.

Repository does not exist

Hi guys,

I am trying to follow the installation instructions and when I type this command an error message is returned:

docker run --rm bbvalabs/apicheck -h

Unable to find image 'bbvalabs/apicheck:latest' locally
docker: Error response from daemon: pull access denied for bbvalabs/apicheck, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.

Any idea?

Thx

-r and --rules-file options for sensitive-data detector are not accepting correctly the custom rule file

Issue:
When trying to pass the custom ruleset to sensitive-data detector with either -r or --rules-file options it throws an error:
[!!] 'list' object has no attribute 'update'

Reproduce error:

  1. Passed the following command:
    acurl https://mockbin.org/bin/60dfe0f7-8f4e-4063-a940-7162d1ec3cc1 | sensitive-data -r rules.yaml
  2. Mockbin with password header set at: https://mockbin.org/bin/60dfe0f7-8f4e-4063-a940-7162d1ec3cc1/view#apiembed
  3. Custom rule set (was taken from core):
    - id: core-001 description: Find 'password' keyword in flow data regex: '([pP][aA][sS][sS][wW][oO][rR][dD])' severity: Medium # Allowed values: Low, Medium, High searchIn: All # Allowed values: Response, Request, Headers, All
  4. File name is rules.yaml

Notes:
Found that function load hardcoded 'rules.yaml' file name at: https://github.com/BBVA/apicheck/blob/master/tools/sensitive-data/sensitive_data/__main__.py#L79

Maybe that is the reason for error?

Tried to change the rule filename and id name in rule file. Result is same.

Proposal: alternative OAS tool with extensible rules

Proposal

I'm willing to provide another OAS3 linting tool based on Spectral. I'm working on a set of security rules which are not provided by speccy, to ensure:

  • numbers, strings and arrays are properly constrained;
  • endpoints use https://
  • Cache policy prevent euristic caching
  • PATCH content-type avoids bad behavior

Notes

  • I chose Spectral because it supports both javascript and yaml rules;
  • rule sources are here
    but you can just use the assembled spectral.yml
  • the initial work on security rules is here and it will be delivered in another file (eg. spectral-security.yml)

Your feedback is welcome!

cert is deprecated in apicheck-proxy 1.0.2 docker´s image

after successful installation of apicheck-proxy on macOS Big Sur, I am getting this error message

$ apicheck-proxy
usage: mitmdump [options] [filter]
mitmdump: error: ambiguous option: --cert could match --certs, --cert-passphrase

--cert is deprecated.
Please use --certs instead.

Add required parameters to generators to enable complete dicctionary scans

RIght now every time that you declare a dicctionary a random element is picked at data generation. So, you can't know if every item is visited or not.
In order to make a dictionary combinator the actual combinator must receive the dictionary elements as parameters. This enable to choose one random o combine dictionary values afterwards.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.