Skip to content

Commit 0ed3758

Browse files
committed
Added additional test cases for firebase-admin
1 parent fdddcb1 commit 0ed3758

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/firebase-client.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,12 @@ firebase.database().ref("users/12345/profile").once("value", (snapshot) => {
4444
document.getElementById("userData").innerHTML = parentSnapshot.val(); // $ Alert
4545
});
4646
});
47+
48+
function fun2(category){
49+
dbPath = 'users/' + firebase.auth().currentUser.uid;
50+
dbRef = firebase.database().ref(dbPath);
51+
dbRef.set({'test': randomString}).then(function() {return dbRef.once('value');}).then(function(snapshot) {
52+
document.getElementById("userData").innerHTML = snapshot.val(); // $ MISSING: Alert
53+
return dbRef.remove();
54+
});
55+
}

javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/firebase-server.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,40 @@ functions.database.ref('x').onUpdate(x => {
1717
eval(grandParentSnapshot.val()); // $ Alert[js/code-injection]
1818
});
1919
});
20+
functions.database.ref('/messages/{messageId}').onWrite((change, context) => {
21+
eval(change.after.val()); // $ MISSING: Alert[js/code-injection]
22+
eval(change.before.val()); // $ MISSING: Alert[js/code-injection]
23+
});
24+
25+
functions.database.ref('/messages/{messageId}').onDelete((change, context) => {
26+
eval(change.val()); // $ MISSING: Alert[js/code-injection]
27+
eval(change.val()); // $ MISSING: Alert[js/code-injection]
28+
});
29+
30+
functions.database.ref('/status/{uid}').onUpdate(async (change, context) => {
31+
const eventStatus = change.after.val();
32+
const statusSnapshot = await change.after.ref.once('value');
33+
const status = eval(statusSnapshot.val()); // $ MISSING: Alert[js/code-injection]
34+
return null;
35+
});
36+
37+
function fun(category){
38+
let query = admin.database().ref(`/users/messages`);
39+
query = query.orderByChild('category').equalTo(category);
40+
const snapshot = query.once('value');
41+
let messages = [];
42+
snapshot.forEach((childSnapshot) => {
43+
messages.push({key: childSnapshot.key, message: childSnapshot.val().message});
44+
eval(childSnapshot.val()); // $ MISSING: Alert[js/code-injection]
45+
});
46+
}
47+
48+
async function fun3(uid, postId, size) {
49+
let app;
50+
const config = JSON.parse(process.env.FIREBASE_CONFIG);
51+
config.databaseAuthVariableOverride = {uid: uid};
52+
app = admin.initializeApp(config, uid);
53+
const imageUrlRef = app.database().ref(`/posts`);
54+
const snap = await imageUrlRef.once('value');
55+
eval(snap.val()); // $ MISSING: Alert[js/code-injection]
56+
}

0 commit comments

Comments
 (0)