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

Go: Add Rs Cors Support #14873

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open

Go: Add Rs Cors Support #14873

wants to merge 5 commits into from

Conversation

Kwstubbs
Copy link
Contributor

Add RsCors support to CodeQL CorsMisconfiguration.ql

go/ql/lib/semmle/go/frameworks/RsCors.qll Show resolved Hide resolved
Comment on lines +7 to +9
/**
* Provides abstract class for modeling the Go CORS handler model origin write.
*/

Check warning

Code scanning / CodeQL

Class QLDoc style. Warning

The QLDoc for a class should start with 'A', 'An', or 'The'.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/**
* Provides abstract class for modeling the Go CORS handler model origin write.
*/
/**
* A Go CORS handler model origin write.
*/

Comment on lines +16 to +18
/**
* Provides abstract class for modeling the Go CORS handler model allow all origins write.
*/

Check warning

Code scanning / CodeQL

Class QLDoc style. Warning

The QLDoc for a class should start with 'A', 'An', or 'The'.
Comment on lines +25 to +27
/**
* Provides abstract class for modeling the Go CORS handler model allow credentials write.
*/

Check warning

Code scanning / CodeQL

Class QLDoc style. Warning

The QLDoc for a class should start with 'A', 'An', or 'The'.
Copy link
Contributor

@owen-mc owen-mc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The abstract classes should not be in RsCors.qll. I'd either put them in go/ql/lib/semmle/go/Concepts.qll or in a new file in go/ql/lib/semmle/go/concepts/ which you then import in go/ql/lib/semmle/go/Concepts.qll.

go/ql/lib/semmle/go/frameworks/RsCors.qll Show resolved Hide resolved
Comment on lines +7 to +9
/**
* Provides abstract class for modeling the Go CORS handler model origin write.
*/
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/**
* Provides abstract class for modeling the Go CORS handler model origin write.
*/
/**
* A Go CORS handler model origin write.
*/

@owen-mc
Copy link
Contributor

owen-mc commented Nov 22, 2023

Actually, since these abstract classes are only used by this one query, they shouldn't go in concepts (which is more meant for abstract classes that are used by multiple queries, I think). And I also didn't notice that this query is still in experimental. That makes it difficult to know where to put them. Maybe where they are is good enough for now. Do you think the query should be promoted?

}

/**
* A variable of type Options that holds the headers to be set.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't actually correct: if v is a.b.c then this is the Variable a and the thing that has type Options is a.b.c. I didn't notice this when you originally modeled GinCors. Can I ask why you are doing it this way? Is there a particular case where just using Variable or just using SsaWithFields doesn't work?

Copy link
Contributor

@owen-mc owen-mc Nov 23, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking at it more carefully, I see that, because of the way that they are modeled, RsOptions and GinConfig are confined to be local variables defined in functions. Is that what you intended? Might you ever want to reason about one that is defined at package scope?

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

Successfully merging this pull request may close these issues.

None yet

2 participants