Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apply for Core Infrastructure Initiative #17

Open
directionless opened this issue Aug 27, 2019 · 7 comments
Open

Apply for Core Infrastructure Initiative #17

directionless opened this issue Aug 27, 2019 · 7 comments

Comments

@directionless
Copy link
Member

Community bridge requires we have a badge from Core Infrastructure Initiative https://www.coreinfrastructure.org/programs/badge-program/

@directionless
Copy link
Member Author

I went through and created https://bestpractices.coreinfrastructure.org/en/projects/3125

It's worth having a couple more folks edit that. Especially looking through the silver or gold levels. There's a lot of random bits todo.

@mike-myers-tob
Copy link
Member

Thanks for starting this! I just reviewed the answers provided so far.

  • Under "unique version numbering" there's a typo: semvar, but you meant SemVer
  • Vulnerability report process, responsiveness: I think we do have one example within the last six months, https://nvd.nist.gov/vuln/detail/CVE-2019-3567 in which I believe the initial response to vulnerability reporting was <14 days? May 22nd was the disclosure by Facebook, but we don't know when it was disclosed to them.
  • Vulnerability disclosures: we have a place on GitHub now, to list these. For future use. It's a new feature. https://github.com/osquery/osquery/security/advisories
  • Working build system, FLOSS tools: the only caveat here is if building for Windows, we are using the MSVC compiler, which is not FLOSS. Code signing on macOS and Windows is not possible with FLOSS either right? Interpreting the question more favorably, yes, it's all buildable on Linux with FLOSS-only tools.
  • Basic good cryptographic practices: typo here ("cryptograph"). We can specifically say that we use OpenSSL, HTTPS (TLS, not SSL) for data in transit, and certificate-based server authentication (also can be added detail for the MITM question)

For addressing the static analysis category, I think we are "Unmet" for these currently, but Alessandro opened osquery/osquery#5728 and osquery/osquery#5727

For dynamic analysis, we've recently opened a PR for Clang sanitizers, which would fulfill the requirement: osquery/osquery#5628

@mike-myers-tob
Copy link
Member

Regarding the silver badge criteria:

For what it's worth, we're tackling I8N issues right now for Python Software Foundation on a different project. Maybe what we learned there will be useful.

  • Previous versions: clearly we don't have the bandwidth to support a 3.x branch. Isn't the upgrade path from 3.x to 4.0 just "install new osquery"? Were there any gotchas to document? We can promise to provide easy upgrade paths in the future. That would fulfill this requirement.
  • Vulnerability report process: we can cite the SECURITY policy, and then add CVE-2019-3567 with credit to Facebook (?) to the advisories section of GitHub https://github.com/osquery/osquery/security/advisories and point to that
  • Coding styles: Introduce clang-tidy support osquery#5729 and document code guidelines osquery#5593
  • Working build system: with CMake I believe we are "Met" for all of these, but can @alessandrogario confirm?
  • Installation system: yes, with Chocolatey, Homebrew, MSI package, etc. But allowing a configurable install location might be N/A because we can't have the user putting osquery in a world-writable directory.
  • External dependencies: they're talking about a dependency manifest, but there is no C++ package manager so I suggest marking N/A or pointing to how we third-party dependencies are enumerable as Git submodules now.
  • Dependency vulnerability checking: n/a, we have to do this manually with C++ wouldn't we?
  • Easy to update dependencies: I think we've done the best you can do in C++
  • Avoid using deprecated APIs where FLOSS alternatives exist: unless they have an example of this, "Met"
  • Automated test suite: Met, we're doing that now with the CI system
  • Regression tests: Unmet, there has been no effort to do that yet
  • Test coverage: we already use gtest; what is our gcov currently?
  • "Must have policy to add tests with new functionality" — we can link to our PR template that makes this the policy already https://github.com/osquery/osquery/blob/master/.github/PULL_REQUEST_TEMPLATE.md
  • Secure design principles: we should open a new issue "document security design of osquery"
  • Cryptographic principles: algorithm support: we use OpenSSL which should continue to provide algorithmic alternatives and best-practices for transport encryption, and all of that should be transparent to osquery. The link to our multiple supported TLS ciphers: https://github.com/osquery/osquery/blob/e6fe15eb49660725e65dba1549932ed96e0a8c6e/osquery/remote/transports/tls.h#L24
  • Storing authentication credentials: n/a or maybe "Met" if referring to the credentials to our project's repos, CI, ReadTheDocs account etc. But someone who understands client enrollment and the handling of the TLS client secret key should weigh in.
  • No use of insecure protocols: Met. Again, see https://github.com/osquery/osquery/blob/e6fe15eb49660725e65dba1549932ed96e0a8c6e/osquery/remote/transports/tls.h#L29 and https://github.com/osquery/osquery/blob/master/osquery/remote/transports/tls.cpp#L104
  • "Must perform certificate verification before sending HTTP headers" yea someone will have to look carefully to verify that
  • Cryptographically sign stable releases: we should be "Met" already for this
  • Inputs from untrusted sources: we could arguably mark n/a for this, as osquery doesn't handle input from untrusted sources except as through a system API
  • Compile-time hardening mechanisms: we opt into them, see /cmake/flags.cmake
  • "Provide an assurance case" this would be related to documenting the security design of osquery, mentioned above.
  • Static/dynamic analysis: these are repeats of the "passing" level criteria, we just have to do them.

@mike-myers-tob
Copy link
Member

Regarding the gold badge criteria:

@alessandrogario
Copy link
Member

alessandrogario commented Aug 28, 2019

About the build system questions: the first three are all met now, while the last will be met when we merge the third-party-submodules PR (with the custom toolchain).

@mike-myers-tob
Copy link
Member

We have applied for CII, and displayed the badge. osquery/osquery#5744

What remains is incorporating the rest of the comments on this issue here into the answers on CII, and/or generating new issues for individual goals.

@mike-myers-tob
Copy link
Member

Ok, I've marked off the silver badge requirement for having a Security Assurance doc 👍🏻

Internationalization would be the biggest remaining obstacle to having the Silver Badge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants