|
| 1 | +private import codeql.files.FileSystem |
| 2 | +private import codeql.ruby.DataFlow |
| 3 | +private import codeql.ruby.dataflow.RemoteFlowSources |
| 4 | +private import codeql.ruby.security.CodeInjectionCustomizations |
| 5 | +private import codeql.ruby.security.CommandInjectionCustomizations |
| 6 | +private import codeql.ruby.security.XSS |
| 7 | +private import codeql.ruby.security.PathInjectionCustomizations |
| 8 | +private import codeql.ruby.security.ServerSideRequestForgeryCustomizations |
| 9 | +private import codeql.ruby.security.UnsafeDeserializationCustomizations |
| 10 | +private import codeql.ruby.security.UrlRedirectCustomizations |
| 11 | + |
| 12 | +class RelevantFile extends File { |
| 13 | + RelevantFile() { not getRelativePath().regexpMatch(".*/test(case)?s?/.*") } |
| 14 | +} |
| 15 | + |
| 16 | +RemoteFlowSource relevantTaintSource(string kind) { |
| 17 | + result.getLocation().getFile() instanceof RelevantFile and |
| 18 | + kind = result.getSourceType() |
| 19 | +} |
| 20 | + |
| 21 | +DataFlow::Node relevantTaintSink(string kind) { |
| 22 | + result.getLocation().getFile() instanceof RelevantFile and |
| 23 | + ( |
| 24 | + kind = "CodeInjection" and result instanceof CodeInjection::Sink |
| 25 | + or |
| 26 | + kind = "CommandInjection" and result instanceof CommandInjection::Sink |
| 27 | + or |
| 28 | + kind = "XSS" and result instanceof ReflectedXSS::Sink |
| 29 | + or |
| 30 | + kind = "PathInjection" and result instanceof PathInjection::Sink |
| 31 | + or |
| 32 | + kind = "ServerSideRequestForgery" and result instanceof ServerSideRequestForgery::Sink |
| 33 | + or |
| 34 | + kind = "UnsafeDeserialization" and result instanceof UnsafeDeserialization::Sink |
| 35 | + or |
| 36 | + kind = "UrlRedirect" and result instanceof UrlRedirect::Sink |
| 37 | + ) |
| 38 | +} |
0 commit comments