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

Assignment instructions are confusing causing problems with online format class #53

Open
Kurlee opened this issue Jan 19, 2019 · 7 comments

Comments

@Kurlee
Copy link

Kurlee commented Jan 19, 2019

In the last semester, it became apparent that the instructions in docs/EducationalAssignments/ are often confusing, and do not cover the scope of what is required during the assignment.

Most common issue was that the instructions don't do a good enough job of introducing the compatibility requirements that need to be built into the reference monitor so it will not break the functionality of the entire environment.

Example: The majority of students failed to build their reference monitor with support for cases when the file was reopened after closing. This caused issues during the second assignment, when we could not test the quality of the security monitor, because they had not understood the whole scope of the assignment.

Online format classes aggravate this issue significantly. I propose clarifying the requirements of the assignments for future classes. I will also volunteer myself to do so if there is no other candidate.

@JustinCappos
Copy link
Contributor

JustinCappos commented Jan 19, 2019 via email

@Kurlee
Copy link
Author

Kurlee commented Jan 20, 2019

The main issue we ran into was that students had a difficult time doing the assignment because they had difficulty grasping the entire scope of the project and the base functionality. The assignment we worked on this past semester was the ABopenfile series.

I would characterize the issue the majority of the students had as having a hard time linking the assignment, documentation, and guidance peppered in the class forums by TA's. I was really excited about this assignment and it was disappointing to see that I could not properly asses the majority of reference monitors during assignment two because basic functionality was not there. Upon inspecting the source code, it was apparent that the students had implemented features to protect against basic invalid write attacks.

I think that the functionality of the openfile method should be clarified in the original assignment as this was the most common issue. Sort of a "What you should be able to do" and "What you shouldnt be able to do" kind of thing

@JustinCappos
Copy link
Contributor

JustinCappos commented Jan 20, 2019 via email

@Kurlee
Copy link
Author

Kurlee commented Jan 20, 2019

Yes, I will go ahead and send a PR in the next couple days

Thank you, Professor!

@SemicolonExpected
Copy link
Contributor

Hi, I wanted to piggyback off this mainly because issue is similar in that I believe there is an issue with instructions, and I didn't know a way to phrase the title without giving anything away for students because I also have a very specific issue with instructions as well. Apologies for wall of text in advance. Please let me know what you think

Here's a TLDR:

  1. Instructions create what I believe to be a vulnerability.
  2. Instructions unclear. Need unambiguous expectations of what resource monitor allows to occur.or clear well defined goals. Specifications and scope are too broad

1 Instructions cause what I believe to be a vulnerability.

I noticed in the ABopenfile series, in the reference monitor part one it states:

When close() is called on the file, if a file is not valid, it is discarded. If both files are valid, the older one is discarded.

Implying that you keep the a or b file. Keeping the readonly a file, can cause issues if someone tries to open it. I can email you with what issues it might cause that I think is just an inherant vulnerability.
The other issue is that the assignment is presented as simulating keeping a backup in case something goes wrong you have a backup, but it is never specified that the original file be updated, either with the new valid file or the backup. Also I am not sure why you would keep either of the files after updating the original file.


2 Instructions unclear. Specifications and scope are too broad

This being said, the other issue is that it is still confusing as to what the reference monitor is suppose to do to operate correctly. While it is suppose to be open ended and is subject to interpretation, I feel like it does become confusing when there aren't examples of expected behavior. We have an example where file should not have been written to before closing, but not what files we should end up with after closing. It's hard to assess students when students have different interpretations of what is expected.

This causes stress as students are unsure what is and is not valid behavior and if something is a thing students should allow. This also causes problems when students write attack code and believe they have found a vulnerability where the defender believes that what attacker did was valid behavior and depending on interpretation both can be correct.


While some of my examples seem intuitive such as updating the original file, because why would you have the newer file be a file.b file what if you need to update again you would need to update on file.b and create a file.b.b and so forth however a student might not consider that and take it at face value (as we are accustomed to math problems where the premise is grounded in some strange reality where Bob goes to the store bought 500 watermelons, but Amy ate 30 of them how many are left) combined with not having well defined guidelines expected behavior it becomes ambiguous. I think to solve this you would have to have well defined guidelines, and describing how it applies to a real world situation will help greatly + make the assignment more intuitive. We already have the concept of the file backup for updating firmware. Perhaps we could outline what that entails aside from the fact that updates create a backup just in case and tie it into the assignment.


The language is also a little unclear, while I found "the older one is discarded" to obviously mean the valid backup as we only want the valid written to file, it left students concerned with timing. I don't feel like you would be giving anything away by stating that we would keep the valid write only b file if both files are valid.

@JustinCappos
Copy link
Contributor

JustinCappos commented Sep 21, 2019 via email

@SemicolonExpected
Copy link
Contributor

Sure, I'll start working on it!

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