diff --git a/soot-infoflow/pom.xml b/soot-infoflow/pom.xml index 9e806ce4c..a341eb632 100644 --- a/soot-infoflow/pom.xml +++ b/soot-infoflow/pom.xml @@ -1,166 +1,263 @@ - 4.0.0 - de.tud.sse - soot-infoflow - soot-infoflow - 2.7.1 - Soot extending data flow tracking components for Java - jar - - - 1.8 - 1.8 - UTF-8 - - - - soot-infoflow-classes - src - test - build/classes - build/testclasses - - - org.apache.maven.plugins - maven-compiler-plugin - 3.2 - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + de.tud.sse + soot-infoflow + soot-infoflow + 2.7.1.1 + Soot extending data flow tracking components for Java + jar + https://github.com/secure-software-engineering/FlowDroid + + Fraunhofer SIT + https://www.sit.fraunhofer.de/ + + + + GNU LESSER GENERAL PUBLIC LICENSE 2.1 + https://www.gnu.org/licenses/lgpl-2.1.txt + repo + + + + + Steven Arzt + steven.arzt@sit.fraunhofer.de + Fraunhofer SIT + https://www.sit.fraunhofer.de/en/ + + + + scm:git:git@github.com:secure-software-engineering/FlowDroid.git + scm:git:git@github.com:secure-software-engineering/FlowDroid.git + https://github.com/secure-software-engineering/FlowDroid/tree/develop + - - org.apache.maven.plugins - maven-surefire-plugin - 2.20.1 - - - soot/jimple/infoflow/test/junit/** - - - - - maven-assembly-plugin - - - jar-with-dependencies - - soot-infoflow-trunk - false - - - - org.apache.maven.plugins - maven-jar-plugin - 3.0.2 - - - - test-jar - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.0.1 - - - attach-sources - - jar - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.10.4 - - false - - - - attach-javadocs - - jar - - - - - - - - - . - - EasyTaintWrapperSource.txt - - - - - - - - heros - heros - 1.0.1-SNAPSHOT - - - - ca.mcgill.sable - jasmin - 2.5.0-SNAPSHOT - - - ca.mcgill.sable - soot - 3.2.0 - - - junit - junit - 4.12 - test - - - org.hamcrest - hamcrest-core - 1.3 - test - - - java.j2ee - j2ee - 1.4 - test - - - net.sf.trove4j - trove4j - 3.0.3 - - - - com.google.guava - guava - 25.1-jre - - + + 1.8 + 1.8 + UTF-8 + 1.6 + 1.6.8 + 3.0.1 + 3.0.0 + 3.0.2 + 2.20.1 + 3.1.0 + + + + soot-infoflow-classes + src + test + build/classes + build/testclasses + + + org.apache.maven.plugins + maven-compiler-plugin + 3.2 + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + soot/jimple/infoflow/test/junit/** + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven-assembly-plugin.version} + + + jar-with-dependencies + + soot-infoflow-trunk + false + + + + org.apache.maven.plugins + maven-jar-plugin + ${maven-jar-plugin.version} + + + + test-jar + + + + + + org.apache.maven.plugins + maven-source-plugin + ${maven-source-plugin.version} + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc-plugin.version} + + false + + + + + + + . + + EasyTaintWrapperSource.txt + + + + + + + + de.upb.cs.swt + heros + 1.1.0 + + + ca.mcgill.sable + jasmin + 3.0.1 + + + ca.mcgill.sable + soot + 3.2.0 + + + junit + junit + 4.12 + test + + + org.hamcrest + hamcrest-core + 1.3 + test + + + javax.servlet + javax.servlet-api + 3.0.1 + test + + + + net.sf.trove4j + trove4j + 3.0.3 + + + com.google.guava + guava + 25.1-jre + + + + + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2 + + + + + + deploy + + + deploy + true + + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + ${maven-nexus-staging-plugin.version} + true + + ossrh + https://oss.sonatype.org/ + true + + + + org.apache.maven.plugins + maven-gpg-plugin + ${maven-gpg-plugin.version} + + + sign-artifacts + verify + + sign + + + + + --pinentry-mode + loopback + + + + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + simple-command + package + + single + + + + + + + + - - - soot-snapshot - Soot snapshot server - https://soot-build.cs.uni-paderborn.de/nexus/repository/soot-snapshot/ - - - soot-release - Soot release server - https://soot-build.cs.uni-paderborn.de/nexus/repository/soot-release/ - - diff --git a/soot-infoflow/test/soot/jimple/infoflow/test/securibench/supportClasses/DummyHttpRequest.java b/soot-infoflow/test/soot/jimple/infoflow/test/securibench/supportClasses/DummyHttpRequest.java index 7e963c9dc..117b2bc0a 100644 --- a/soot-infoflow/test/soot/jimple/infoflow/test/securibench/supportClasses/DummyHttpRequest.java +++ b/soot-infoflow/test/soot/jimple/infoflow/test/securibench/supportClasses/DummyHttpRequest.java @@ -4,355 +4,414 @@ * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * + * * Contributors: Christian Fritz, Steven Arzt, Siegfried Rasthofer, Eric * Bodden, and others. ******************************************************************************/ package soot.jimple.infoflow.test.securibench.supportClasses; +import javax.servlet.*; +import javax.servlet.http.*; import java.io.BufferedReader; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.Principal; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; -import java.util.StringTokenizer; - -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletInputStream; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; +import java.util.*; public class DummyHttpRequest implements HttpServletRequest { - enum count {ONE, TWO}; - @Override - public Object getAttribute(String arg0) { - return ""; - } - - @Override - @SuppressWarnings("rawtypes") - public Enumeration getAttributeNames() { - - return new StringTokenizer("one two"); - } - - @Override - public String getCharacterEncoding() { - return "UTF-8"; - } - - @Override - public int getContentLength() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public String getContentType() { - // TODO Auto-generated method stub - return "contenttype"; - } - - @Override - public ServletInputStream getInputStream() throws IOException { - // TODO Auto-generated method stub - return new DummyServletInputStream(); - } - - @Override - public Locale getLocale() { - // TODO Auto-generated method stub - return Locale.ENGLISH; - } - - @Override - @SuppressWarnings("rawtypes") - public Enumeration getLocales() { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getParameter(String arg0) { - // TODO Auto-generated method stub - return arg0; - } - - @Override - @SuppressWarnings("rawtypes") - public Map getParameterMap() { - HashMap map = new HashMap(); - map.put("dummy", "dummy"); - return map; - } - - @Override - @SuppressWarnings("rawtypes") - public Enumeration getParameterNames() { - // TODO Auto-generated method stub - return new StringTokenizer("parameter names"); - } - - @Override - public String[] getParameterValues(String arg0) { - // TODO Auto-generated method stub - return new String[]{arg0}; - } - - @Override - public String getProtocol() { - // TODO Auto-generated method stub - return ""; - } - - @Override - public BufferedReader getReader() throws IOException { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getRealPath(String arg0) { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getRemoteAddr() { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getRemoteHost() { - // TODO Auto-generated method stub - return null; - } - - @Override - public RequestDispatcher getRequestDispatcher(String arg0) { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getScheme() { - // TODO Auto-generated method stub - return ""; - } - - @Override - public String getServerName() { - // TODO Auto-generated method stub - return null; - } - - @Override - public int getServerPort() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public boolean isSecure() { - // TODO Auto-generated method stub - return false; - } - - @Override - public void removeAttribute(String arg0) { - // TODO Auto-generated method stub - - } - - @Override - public void setAttribute(String arg0, Object arg1) { - // TODO Auto-generated method stub - - } - - @Override - public void setCharacterEncoding(String arg0) throws UnsupportedEncodingException { - // TODO Auto-generated method stub - - } - - @Override - public String getAuthType() { - // TODO Auto-generated method stub - return ""; - } - - @Override - public String getContextPath() { - // TODO Auto-generated method stub - return ""; - } - - @Override - public Cookie[] getCookies() { - Cookie c = new Cookie("", ""); - return new Cookie[]{c}; - } - - @Override - public long getDateHeader(String arg0) { - // TODO Auto-generated method stub - return 0; - } - - @Override - public String getHeader(String arg0) { - // TODO Auto-generated method stub - return null; - } - - @Override - @SuppressWarnings("rawtypes") - public Enumeration getHeaderNames() { - return new StringTokenizer("secret1 secret2 secret3"); - } - - @Override - @SuppressWarnings("rawtypes") - public Enumeration getHeaders(String arg0) { - return new StringTokenizer("secret1 secret2 secret3"); - } - - @Override - public int getIntHeader(String arg0) { - // TODO Auto-generated method stub - return 0; - } - - @Override - public String getMethod() { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getPathInfo() { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getPathTranslated() { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getQueryString() { - // TODO Auto-generated method stub - return ""; - } - - @Override - public String getRemoteUser() { - // TODO Auto-generated method stub - return ""; - } - - @Override - public String getRequestURI() { - // TODO Auto-generated method stub - return ""; - } - - @Override - public StringBuffer getRequestURL() { - // TODO Auto-generated method stub - return new StringBuffer("http://"); - } - - @Override - public String getRequestedSessionId() { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getServletPath() { - // TODO Auto-generated method stub - return null; - } - - @Override - public HttpSession getSession() { - return new DummyHttpSession(); - } - - @Override - public HttpSession getSession(boolean arg0) { - // TODO Auto-generated method stub - return new DummyHttpSession(); - } - - @Override - public Principal getUserPrincipal() { - // TODO Auto-generated method stub - return null; - } - - @Override - public boolean isRequestedSessionIdFromCookie() { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean isRequestedSessionIdFromURL() { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean isRequestedSessionIdFromUrl() { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean isRequestedSessionIdValid() { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean isUserInRole(String arg0) { - // TODO Auto-generated method stub - return false; - } - - @Override - public String getLocalAddr() { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getLocalName() { - // TODO Auto-generated method stub - return null; - } - - @Override - public int getLocalPort() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public int getRemotePort() { - // TODO Auto-generated method stub - return 0; - } + enum count {ONE, TWO} + + ; + + @Override + public Object getAttribute(String arg0) { + return ""; + } + + @Override + public AsyncContext getAsyncContext() { + return null; + } + + + @Override + public ServletContext getServletContext() { + return null; + } + + @Override + public AsyncContext startAsync() { + return null; + } + + @Override + public AsyncContext startAsync(ServletRequest servletRequest, + ServletResponse servletResponse) { + return null; + } + + @Override + public boolean isAsyncSupported() { + return true; + } + + @Override + public boolean isAsyncStarted() { + return true; + } + + @Override + public boolean authenticate(HttpServletResponse response) { + return true; + } + + @Override + @SuppressWarnings("rawtypes") + public Enumeration getAttributeNames() { + + return new StringTokenizer("one two"); + } + + @Override + public String getCharacterEncoding() { + return "UTF-8"; + } + + @Override + public int getContentLength() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public String getContentType() { + // TODO Auto-generated method stub + return "contenttype"; + } + + @Override + public ServletInputStream getInputStream() throws IOException { + // TODO Auto-generated method stub + return new DummyServletInputStream(); + } + + @Override + public Locale getLocale() { + // TODO Auto-generated method stub + return Locale.ENGLISH; + } + + @Override + @SuppressWarnings("rawtypes") + public Enumeration getLocales() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getParameter(String arg0) { + // TODO Auto-generated method stub + return arg0; + } + + @Override + @SuppressWarnings("rawtypes") + public Map getParameterMap() { + HashMap map = new HashMap(); + map.put("dummy", "dummy"); + return map; + } + + @Override + public Part getPart(String name) { + return null; + } + + @Override + public java.util.Collection getParts() { + return null; + } + + @Override + public void logout() { + + } + + @Override + public void login(String user, String pwd) { + + } + + @Override + @SuppressWarnings("rawtypes") + public Enumeration getParameterNames() { + // TODO Auto-generated method stub + return new StringTokenizer("parameter names"); + } + + @Override + public String[] getParameterValues(String arg0) { + // TODO Auto-generated method stub + return new String[]{arg0}; + } + + + @Override + public String getProtocol() { + // TODO Auto-generated method stub + return ""; + } + + @Override + public DispatcherType getDispatcherType() { + return null; + } + + + @Override + public BufferedReader getReader() throws IOException { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getRealPath(String arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getRemoteAddr() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getRemoteHost() { + // TODO Auto-generated method stub + return null; + } + + @Override + public RequestDispatcher getRequestDispatcher(String arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getScheme() { + // TODO Auto-generated method stub + return ""; + } + + @Override + public String getServerName() { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getServerPort() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public boolean isSecure() { + // TODO Auto-generated method stub + return false; + } + + @Override + public void removeAttribute(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setAttribute(String arg0, Object arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void setCharacterEncoding(String arg0) throws UnsupportedEncodingException { + // TODO Auto-generated method stub + + } + + @Override + public String getAuthType() { + // TODO Auto-generated method stub + return ""; + } + + @Override + public String getContextPath() { + // TODO Auto-generated method stub + return ""; + } + + @Override + public Cookie[] getCookies() { + Cookie c = new Cookie("", ""); + return new Cookie[]{c}; + } + + @Override + public long getDateHeader(String arg0) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public String getHeader(String arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + @SuppressWarnings("rawtypes") + public Enumeration getHeaderNames() { + return new StringTokenizer("secret1 secret2 secret3"); + } + + @Override + @SuppressWarnings("rawtypes") + public Enumeration getHeaders(String arg0) { + return new StringTokenizer("secret1 secret2 secret3"); + } + + @Override + public int getIntHeader(String arg0) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public String getMethod() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getPathInfo() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getPathTranslated() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getQueryString() { + // TODO Auto-generated method stub + return ""; + } + + @Override + public String getRemoteUser() { + // TODO Auto-generated method stub + return ""; + } + + @Override + public String getRequestURI() { + // TODO Auto-generated method stub + return ""; + } + + @Override + public StringBuffer getRequestURL() { + // TODO Auto-generated method stub + return new StringBuffer("http://"); + } + + @Override + public String getRequestedSessionId() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getServletPath() { + // TODO Auto-generated method stub + return null; + } + + @Override + public HttpSession getSession() { + return new DummyHttpSession(); + } + + @Override + public HttpSession getSession(boolean arg0) { + // TODO Auto-generated method stub + return new DummyHttpSession(); + } + + @Override + public Principal getUserPrincipal() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean isRequestedSessionIdFromCookie() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isRequestedSessionIdFromURL() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isRequestedSessionIdFromUrl() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isRequestedSessionIdValid() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isUserInRole(String arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public String getLocalAddr() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getLocalName() { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getLocalPort() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getRemotePort() { + // TODO Auto-generated method stub + return 0; + } } diff --git a/soot-infoflow/test/soot/jimple/infoflow/test/securibench/supportClasses/DummyHttpResponse.java b/soot-infoflow/test/soot/jimple/infoflow/test/securibench/supportClasses/DummyHttpResponse.java index 43505d487..08dcfa694 100644 --- a/soot-infoflow/test/soot/jimple/infoflow/test/securibench/supportClasses/DummyHttpResponse.java +++ b/soot-infoflow/test/soot/jimple/infoflow/test/securibench/supportClasses/DummyHttpResponse.java @@ -10,13 +10,13 @@ ******************************************************************************/ package soot.jimple.infoflow.test.securibench.supportClasses; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Locale; - import javax.servlet.ServletOutputStream; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Arrays; +import java.util.Locale; public class DummyHttpResponse implements HttpServletResponse { @@ -26,12 +26,36 @@ public void flushBuffer() throws IOException { } + @Override + @SuppressWarnings("rawtypes") + public java.util.Collection getHeaders(String arg0) { + return Arrays.asList("secret1", "secret2", "secret3"); + } + + @Override + public String getHeader(String arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getStatus(){ + return 0; + } + + @Override public int getBufferSize() { // TODO Auto-generated method stub return 0; } + @Override + @SuppressWarnings("rawtypes") + public java.util.Collection getHeaderNames() { + return Arrays.asList("secret1", "secret2", "secret3"); + } + @Override public String getCharacterEncoding() { // TODO Auto-generated method stub diff --git a/soot-infoflow/test/soot/jimple/infoflow/test/securibench/supportClasses/DummyServletContext.java b/soot-infoflow/test/soot/jimple/infoflow/test/securibench/supportClasses/DummyServletContext.java index 06b38093a..6ad9d7ce8 100644 --- a/soot-infoflow/test/soot/jimple/infoflow/test/securibench/supportClasses/DummyServletContext.java +++ b/soot-infoflow/test/soot/jimple/infoflow/test/securibench/supportClasses/DummyServletContext.java @@ -13,14 +13,10 @@ import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; -import java.util.Enumeration; -import java.util.Set; -import java.util.StringTokenizer; +import java.util.*; -import javax.servlet.RequestDispatcher; -import javax.servlet.Servlet; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; +import javax.servlet.*; +import javax.servlet.descriptor.JspConfigDescriptor; public class DummyServletContext implements ServletContext { @@ -48,6 +44,141 @@ public String getInitParameter(String arg0) { return arg0; } + @Override + public String getContextPath() { + return null; + } + + @Override + public int getEffectiveMajorVersion() { + return 0; + } + + @Override + public int getEffectiveMinorVersion() { + return 0; + } + + @Override + public boolean setInitParameter(String s, String s1) { + return false; + } + + @Override + public ServletRegistration.Dynamic addServlet(String s, String s1) { + return null; + } + + @Override + public ServletRegistration.Dynamic addServlet(String s, Servlet servlet) { + return null; + } + + @Override + public ServletRegistration.Dynamic addServlet(String s, Class aClass) { + return null; + } + + @Override + public T createServlet(Class aClass) throws ServletException { + return null; + } + + @Override + public ServletRegistration getServletRegistration(String s) { + return null; + } + + @Override + public Map getServletRegistrations() { + return null; + } + + @Override + public FilterRegistration.Dynamic addFilter(String s, String s1) { + return null; + } + + @Override + public FilterRegistration.Dynamic addFilter(String s, Filter filter) { + return null; + } + + @Override + public FilterRegistration.Dynamic addFilter(String s, Class aClass) { + return null; + } + + @Override + public T createFilter(Class aClass) throws ServletException { + return null; + } + + @Override + public FilterRegistration getFilterRegistration(String s) { + return null; + } + + @Override + public Map getFilterRegistrations() { + return null; + } + + @Override + public SessionCookieConfig getSessionCookieConfig() { + return null; + } + + @Override + public void setSessionTrackingModes(Set set) { + + } + + @Override + public Set getDefaultSessionTrackingModes() { + return null; + } + + @Override + public Set getEffectiveSessionTrackingModes() { + return null; + } + + @Override + public void addListener(String s) { + + } + + @Override + public void addListener(T t) { + + } + + @Override + public void addListener(Class aClass) { + + } + + @Override + public T createListener(Class aClass) throws ServletException { + return null; + } + + @Override + public JspConfigDescriptor getJspConfigDescriptor() { + return null; + } + + @Override + public ClassLoader getClassLoader() { + return null; + } + + @Override + public void declareRoles(String... strings) { + + } + @SuppressWarnings("rawtypes") @Override public Enumeration getInitParameterNames() {